2012-06-30 36 views
2

预定义的宏我必须写哪些搜索不同的目录不同的(32/64位)机器的功能。 例如:于64个系统

//if 64 bit 
Opts.AddPath("/usr/include/x86_64-linux-gnu"); 

//if 32 bit 
Opts.AddPath("/usr/include/i386-linux-gnu"); 

是否有预定/编译器定义的宏,让我选择一个特定的代码。

我使用Ubuntu机上GCC。

谢谢。

+0

不是宏本身,而是怎么样: Opts.AddPath((的sizeof(void *的) == 8) “的/ usr /包括/ x86_64的-Linux的GNU”?: “在/ usr /包括/ I386-Linux的GNU”); –

+0

是否由64位机器上的sizeof(void *)== 8语言保证? –

+0

它与语言没有多大关系。您正在编写依赖*实现细节*的代码。填充了sizeof(void *)等于8的可执行文件的目录。该语言也不能保证该目录存在。也许你会在一台完全不同的体系结构的机器上运行它,但那个目录不会被命名为“x86_64-linux-gnu”。 –

回答

1

你可以使用-D标志,当你编译代码定义常量(link