Я тестирую две версии одного и того же кода (с GCC версии 4.9.2 на Linux, без параметров).GCC требует подчеркивания в # define's?
У обоих есть директива #define
, а затем пара #ifdef
/#endif
далее вниз.
Теперь выясняется, что комбинация работает правильно, только если метка после начального #define
начинается с подчеркивания. Без подчеркивания это работает ... очень странным образом, только каждый третий раз.
Другими словами, это работает
#define _whatever
в то время как это не делает:
#define whatever
Даже если я знаю, как сделать работу директивы, просто интересно - это такое поведение следовать любому стандарту ?
Редактировать: Ниже приведены нижеприведенные нижеприведенные примеры. Это одна распечатывает линия «Препроцессор работает»:
#define _whatever
#include <stdio.h>
void main()
{
#ifdef _whatever
printf("Preprocessor works \n");
#endif
}
... и это один не выдает ничего:
#define whatever
#include <stdio.h>
void main()
{
#ifdef whatever
printf("Preprocessor works \n");
#endif
}
Да, я даже используя слово «все» в буквальном смысле - Я не думаю, что это определено где-то еще. Но опять же, это подчеркивание, которое заставляет ярлык работать.
Вы не показываете, какая часть кода работает или перестает работать. –
Пожалуйста, предоставьте [mcve]. – user694733
Хорошо, реальные примеры: – vanhemt