我在Ubuntu中创建了一个C++共享库项目,它使用编译器g++ 4.6。
一些依赖库期望一些关于编译器和操作系统的预处理器命令能够正确编译,例如
#elif defined(__GNUC__) || defined(__llvm__) || defined(__clang__)但是, Eclipse没有自动定义它们(至少我使用的版本是这样的),在中是否有一个设置或选项为我这样做?
发布于 2012-01-28 12:51:20
可以在项目属性中设置预处理器定义:

。
但是,在您的例子中,我不会使用这些,因为它们不应该是特定于项目的(因为它们是编译器特定的)。我觉得你是在找这些。我不确定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()代替)。
https://stackoverflow.com/questions/9045298
复制相似问题