Я пытаюсь проверить, является ли данная строка #define:
РЕДАКТИРОВАТЬ: Я читаю текстовый файл, который содержит список имен токенов и текст для копирования, строка за строкой, а затем проверка, является ли имя токена, прочитанное в файле, уже #define. Если токен определен, то «копируемый текст» будет скопирован в строку в программе. Если нет, то он пропустит «копировать текст». Приведенный ниже код является просто фрагментом того, как я проверял имя токена, если оно определено:
#define TOKEN_A 1
#define TEST_1(x) x
int main(){
char *str = "TOKEN_A";
#ifdef TEST_1(str)
printf("TOKEN_A is Defined!\n");
#else
printf("TOKEN_A is not Defined!\n");
#endif
char *str1 = "TOKEN_B";
#ifdef TEST_1(str1)
printf("TOKEN_B is Defined!\n");
#else
printf("TOKEN_B is not Defined!\n");
#endif
}
Пример содержимого текстового файла:
TOKEN_A
copy text
TOKEN_B
copy text
Оба результата #ifdef верны, хотя TOKEN_B не определен.
OUTPUT:
"TOKEN_A is Defined!"
"TOKEN_B is Defined!"
Мне было интересно, если моя проверка неверна.
Есть ли другой способ проверить строку, если она #define? Спасибо