Hallo,
beim Programmieren (ähm, vielmehr übertragen) der x64-Paging-Strukturen in meine Bitfelder bekomme ich leider ständig einen mir nicht ersichtlichen Fehler. (Wahrscheinlich total trivial und dumm, aber wie auch immer. Vier Augen sehen mehr als zwei!
)
Code (gekürzt, das ganze gibts natürlich für jede Struktur, und Entschuldigung für die grauenhafte Formatierung, irgendwie funktionieren Tabs im Editor nicht):
typedef struct tag_pml4
{
uint64_t PML4_PRESENT : 1; // Zeile 60
uint64_t PML4_WRITE : 1;
uint64_t PML4_USER : 1;
uint64_t PML4_WRITETHRU : 1;
uint64_t PML4_NOCACHE : 1;
uint64_t PML4_DIRTY : 1; // Zeile 65
uint64_t : 3;
uint64_t PML4_3FREE : 3;
uint64_t PML4_PHYSADDR :40;
uint64_t PML4_11FREE :11; // Zeile 69
uint64_t PML4_NXE : 1; // 0 = EXE/ALLOWED 1 = EXE/FORBIDDEN
} pml4;
Output:
In file included from vmm.c:2:0:
paging.h:61:11: Fehler: expected identifier or »(« before numeric constant
paging.h:62:11: Fehler: expected identifier or »(« before numeric constant
paging.h:63:11: Fehler: expected identifier or »(« before numeric constant
paging.h:64:11: Fehler: expected identifier or »(« before numeric constant
paging.h:65:11: Fehler: expected identifier or »(« before numeric constant
paging.h:70:11: Fehler: expected identifier or »(« before numeric constant
paging.h:71:1: Warnung: kein Semikolon am Ende von »struct« oder »union« [standardmäßig aktiviert]
Kompiliert auf Ubuntu 12.04 LTS, gcc-Version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) mit folgenden Flags:
-Wall -Wextra -Wshadow -Wconversion -Wunreachable-code -Werror-implicit-function-declaration -Wuninitialized -nostdlib -nostartfiles -nodefaultlibs -ffreestanding -fno-builtin -m32 -g3 -O0 -cBesonders die Warnung am Ende ist komisch - da ist doch ein Semikolon?!
Vielen Dank für eure Hilfe und sorry für meine Dummheit...