Настройки проекта Eclipse Indigo C ++ - PullRequest
1 голос
/ 28 января 2012

Я создал проект совместно используемой библиотеки C ++ в Ubuntu с помощью компилятора g ++ 4.6 .
Некоторые библиотеки зависимостей ожидают, что некоторые команды препроцессора о компиляторе и операционной системе будут правильно скомпилированы, как

#elif defined(__GNUC__) || defined(__llvm__) || defined(__clang__)

Однако Eclipse не определяет их автоматически (по крайней мере, версию, которую я использую), есть ли настройка или опция в Eclipse, которая делает это для меня?

1 Ответ

2 голосов
/ 28 января 2012

Вы можете установить препроцессор в свойствах проекта: project properties.

Однако в вашем случае я бы не стал использовать их, поскольку они не должны зависеть от проекта (поскольку они зависят от компилятора). Я действительно думаю, что вы ищете это. Я не уверен, что для llvm / clang (они есть, но я их сейчас не помню), но для GCC вы должны использовать макрос __GNUC__, который будет определен самим компилятором, без необходимости беспокоиться об этом. Ведущие подчеркивания говорят вам, что они не являются частью стандарта и не обязательно определены при использовании другого компилятора (например, MSVC).


Для кроссплатформенного использования vsprintf_s:

// this will be set on Visual Studio only, so this code is added for all other compilers
#ifndef _MSC_VER
#define vsprintf_s(b,l,f,v) vsprintf(b,f,v);
#endif

Но в целом попробуйте использовать функции, доступные на всех платформах (для этого примера вместо этого используйте vsnprintf()).

...