#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'です。 –
連結の場合、連結マクロを定義することができます。しかし、やはり、コンパイラに依存します。インクルードディレクティブでマクロを使うという一般的なアプローチがうまくいかないことに気がつくまで、本当に苦労していました。 –
これを見て:http://stackoverflow.com/questions/9096201/concatenate-string-in-c-include-filename – n3m4nja