макрос, переданный из компиляции, не может быть разрешен в 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)


person MarZzz    schedule 22.09.2016    source источник
comment
Пока он компилируется, в чем именно заключается проблема, связанная с тем, что Eclipse не может узнать, что макросы определены в параметрах компиляции?   -  person Adrian Colomitchi    schedule 22.09.2016
comment
@AdrianColomitchi Я думаю, может быть, моя конфигурация, представленная выше, неверна или недостаточна для того, чтобы Eclipse знал определение? Я не уверен. Любая возможная подсказка?   -  person MarZzz    schedule 22.09.2016
comment
Luna Service Release 2 (4.4.2) Если вас не ограничивают другие факторы, я бы посоветовал вам перейти на Mars.2 (4.5.2) — у Indexer меньше проблем (по крайней мере, это мой личный опыт)   -  person Adrian Colomitchi    schedule 22.09.2016
comment
Я пробовал Марс, но не уверен, что это была 4.5.2, но много раз страдал от того, что он внезапно переставал работать и вызывал сбой компьютера, но когда я перешел на Луну, все работало нормально. Может быть, мне стоит попробовать еще раз, чтобы увидеть, работает ли последняя версия. Спасибо за Вашу информацию.   -  person MarZzz    schedule 22.09.2016
comment
См. также: a">Как мне убедить Eclipse CDT, что для редактирования исходного кода и завершения кода определен макрос?   -  person Gabriel Staples    schedule 08.02.2021


Ответы (1)


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

Неправильное место.

Должно быть "Сборка C/C++ -> Настройки -> Компилятор GCC C++ -> Препроцессор"

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

person Adrian Colomitchi    schedule 22.09.2016