我很困惑如何在#include
指令中使用宏。我已經做到了這一點:如何在#include指令中使用宏?
#include "../../../../GlobalDefintions.h"
#include "../../../../lib/libc++/" ARCH_FAMILY_S "/" ARCH_S "/stkl/printkc/printkc.h"
GlobalDefintions.h:
#ifndef _GlobalDefintions_
#define _GlobalDefintions_
/*Architecture Information Start*/
#define ARCH i386
#define ARCH_FAMILY x86
#define ARCH_S "i386"
#define ARCH_FAMILY_S "x86"
/*Architecture Information End*/
#endif /*_GlobalDefintions_*/
但是這給了我是這樣的:
kernel.c++:24:88: fatal error: ../../../../lib/libc++/: No such file or directory #include "../../../../lib/libc++/" ARCH_FAMILY_S "/" ARCH_S "/stkl/printkc/printkc.h"
有沒有辦法成功地追加ARCH_FAMILY_S
和ARCH_S
到我的#include
指令字符串?
通常這個東西取決於編譯器,而且非常脆弱。相反,通過編譯器的頭部包含路徑選項和/或環境變量來控制頭部的選擇。例如。用於g ++的'CPATH'和用於Visual C++的'INCLUDE'。 –
對於連接,你可以定義一個連接宏。但是,這又取決於編譯器。我記得真的很掙扎,直到我意識到在include指令中使用宏的一般方法是不合適的。 –
看看這個:http://stackoverflow.com/questions/9096201/concatenate-string-in-c-include-filename – n3m4nja