2012-06-30 39 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