#ifdef вызывает конфликт, хотя я использовал #endif - PullRequest
0 голосов
/ 06 апреля 2020

Это то, что я делаю, но это дает мне: «Ошибка: конфликтующие типы для value_t»

Я не уверен, почему это не работает, кто-нибудь может помочь?

Это внутри заголовочного файла, который я использую для двух программ, одна из которых запускается с -DFRACT.

Пока другой с -DINT, а я не запускаю -DINT и -DFRACT вместе, так почему это вызывает конфликт?

g cc -DFRACT -o program1 program1. c

Вот так я запускаю программу1 ..

Для программы2: g cc -DINT - o program2 program2. c

Я также проверил все остальные мои заголовочные файлы на наличие дубликатов, и я не нашел ни одного, спасибо!

#ifdef INT   
typedef int value_t;   
typedef double Key_t;
#endif


#ifdef FRACT     
typedef  Fraction value_t;  
typedef double Key_t;
#endif

1 Ответ

0 голосов
/ 06 апреля 2020

Вы, вероятно, хотели сделать что-то вроде этого:

#if defined (INT) && defined (FRACT)
  #error both defined
#elif defined (INT)
  typedef int value_t;   
#elif defined (FRACT)
  typedef Fraction value_t;  
#else
  #error neither defined
#endif
...