У меня есть структура, определенная в заголовочном файле с именем data.h.
Я включаю data.h в myfile.c.
В структуре у меня есть часть переменных, заблокированных с помощью:
#ifndef TEST
int x;
#endif
и в myfile.c у меня есть:
#ifdef TEST
localx++;
#else
mystruct.x++; //<-compiler complains on this line when compiling
#endif
Когда я пытаюсь скомпилировать с -DTEST
, я получаю компилятор с жалобой на то, что тип mystruct
не содержит поля с именем x
. Что с этим?
У меня нет под рукой компилятора C , поэтому вот что я только что набрал:
в data.h
typdef struct {
#ifndef TEST
int x;
#endif
int y;
} coords;
в myfile.c
#include "data.h"
static coords coord1;
int localx;
int main( )
{
#ifdef TEST
localx = 1;
#else
coord1.x = 1;
#endif
coord1.y = 2;
printf("%i\n", coord1.x);
printf("%i\n", coord1.y);
printf("%i\n", localx);
return 0;
}
Это компилируется, когда я набираю cc myfile.c
, но не с cc myfile.c -DTEST
Я использую компилятор MIPSPro C с ссылками здесь .