У меня есть структура, определенная в файле заголовка, который называется data.h.Препроцессор C в include заголовочные файлы
Я включаю данные.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 ссылающийся на компилятор here.
Просьба показать полное объявление структуры. Кроме того, часть, где она включена, и некоторый код вокруг строки нарушения –
Не могли бы вы убедиться, что вы отправляете реальный код? Прямо сейчас, похоже, что есть 'x', если и только если он не используется. Если есть небольшая ошибка, мы не поймаем ее без реального кода. –
one sec..didnt post nicely – Derek