Nowe posty

Autor Wątek: gcc: expected specifier-qualifier-list before ‘IMAGE_DATA_DIRECTORY’  (Przeczytany 3130 razy)

  • Gość
Cytuj
tomasz@darkstar:~$ gcc -g -o test test.c
In file included from test.c:4:
struct.h:33: error: expected specifier-qualifier-list before ‘IMAGE_FILE_HEADER’
struct.h:88: error: expected specifier-qualifier-list before ‘IMAGE_DATA_DIRECTORY’
Co może coś takiego znaczyć. Sprawdzałem dane miejsce i nic...

#define IMAGE_SIZEOF_SHORT_NAME 8
#pragma pack(push)
#pragma pack (1)

typedef struct _IMAGE_DOS_HEADER {
short int e_magic;
short int e_cblp;
short int e_cp;
short int e_crlc;
short int e_cparhdr;
short int e_minalloc;
short int e_maxalloc;
short int e_ss;
short int e_sp;
short int e_csum;
short int e_ip;
short int e_cs;
short int e_lfarlc;
short int e_ovno;
short int e_res[4];
short int e_oemid;
short int e_oeminfo;
short int e_res2[10];
short int e_elfanew;
} IMAGE_DOS_HEADER;

#pragma pack(pop)

#pragma pack(push)
#pragma pack(1)
typedef struct _IMAGE_NT_HEADERS {
int  Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER OptionalHeader;
} IMAGE_NT_HEADERS;

#pragma pack(pop)

#pragma pack (push)
#pragma pack (1)

typedef struct _IMAGE_FILE_HEADER {
short int Machine;
short int NumberOfSections;
int TimeDateStamp;
int PointerToSymbolTable;
int NumberOfSymbols;
short int SizeOfOptionalHeader;
short int Characteristics;
} IMAGE_FILE_HEADER;

#pragma pack(pop)

#pragma pack(push)
#pragma pack(1)

typedef struct _IMAGE_OPTIONAL_HEADER {
short int Magic;
char MajorLinkerVersion;
char MinorLinkerVersion;
int SizeOfCode;
int SizeOfInitializedData;
int SizeOfUninitializedData;
int AddressOfEntryPoint;
int BaseOfCode;
int BaseOfData;
int ImageBase;
int SectionAlignment;
int FileAlignment;
short int MajorOperatingSystemVersion;
short int MinorOperatingSystemVersion;
short int MajorImageVersion;
short int MinorImageVersion;
short int MajorSubsystemVersion;
short int MinorSubsystemVersion;
int Reserved1;
int SizeOfImage;
int SizeOfHeaders;
int CheckSum;
short int Subsystem;
short int DllCharacteristics;
int SizeOfStackReserve;
int SizeOfStackCommit;
int SizeOfHeapReserve;
int SizeOfHeapCommit;
int LoaderFlags;
int NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER;

#pragma pack (pop)


#pragma pack(push)
#pragma pack(1)


typedef struct _IMAGE_DATA_DIRECTORY{
int VirtualAddress;
int Size;
} IMAGE_DATA_DIRECTORY;


#pragma pack(pop)


#pragma pack(push)
#pragma pack(1)

typedef struct _IMAGE_SECTION_HEADER {
char Name[IMAGE_SIZEOF_SHORT_NAME];
union {
int PhysicalAddress;
int VirtualSize;
} Misc;
int VirtualAddress;
int SizeOfRawData;
int PointerToRawData;
int PointerToRelocations;
int PointerToLinenumbers;
short int NumberOfRelocations;
short int NumberOfLinenumbers;
int Characteristics;
} IMAGE_SECTION_HEADER;

#pragma pack(pop)

jk33

  • Gość
gcc: expected specifier-qualifier-list before ‘IMAGE_DATA_DIRECTORY’
« Odpowiedź #1 dnia: 2010-12-30, 11:20:02 »
Kolejność pojawiania się deklaracji ma znaczenie.
Nie możesz używać danego typu zanim go zadeklarujesz.