Макрос, переданный из компиляции, не может быть разрешен в Eclipse

Я пытаюсь передать определенный макрос в мою программу во время компиляции следующим образом:

#include <stdio.h>
int main() {
    // KEY_CNT is not defined in program but passed at compile time
    printf("KEY_CNT: %d", KEY_CNT); 
    return 0;
}

и скомпилировать с g++ -DKEY_CNT=2 -O2 test_3.cpp -o test_3 и он работает, как и ожидалось, но проблема в том, что Eclipse не может решить 'KEY_CNT'. Это просто игрушечный пример, в моей оригинальной программе много ложных ошибок, подобных этой с красными линиями, действительно раздражают.

Я думаю, что Eclipse может потребоваться уведомление о моей опции компиляции, чтобы он знал, что 'KEY_CNT' определен, поэтому я добавляю -DKEY_CNT=2 в Properties -> C/C++ Build -> Settings -> GCC C++ Compiler -> Miscellaneous, но это все еще не работает.

Любой совет, чтобы решить это?

======== добавлено ========

Версия Eclipse: Eclipse IDE для разработчиков на C/C++, Luna Service Release 2 (4.4.2)

1 ответ

Решение

Свойства -> Сборка C/C++ -> Настройки -> Компилятор GCC C++ -> Разное

Не то место.

Должно быть "C/C++ Build -> Settings -> GCC C++ Compiler -> Preprocessor"

Только что проверил, работает.

Другие вопросы по тегам