Tim*_*ell 1 c++ c-preprocessor
在跨平台项目中,我想#include一个头文件,其名称包含平台的名称.我有一个平台的#define宏.
例如,对于
#define PLATFORM win32
Run Code Online (Sandbox Code Playgroud)
我想要
#include "engine\win32\devices_win32.h"
Run Code Online (Sandbox Code Playgroud)
而对于
#define PLATFORM linux
Run Code Online (Sandbox Code Playgroud)
我想要
#include "engine\linux\devices_linux.h"
Run Code Online (Sandbox Code Playgroud)
我要用Richard Pennington的答案,减去一行代码 - 它对我有用!
#define PLATFORM Linux
#define xstr(x) #x
#define str(x) xstr(x)
#define sub(x) x
#include str(sub(engine/PLATFORM/devices_)PLATFORM.h)
Run Code Online (Sandbox Code Playgroud)
通常,你会做更像的事情:
#ifdef WIN32
#include "devices_win32.h"
#endif
#ifdef LINUX
#include "devices_linux.h"
#endif
Run Code Online (Sandbox Code Playgroud)
...而不是PLATFORM根据平台可以设置不同的单一定义.
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |