kev*_*rpe 4 c macros include ibm-midrange
我在AS/400上工作,有时候是非POSIX.我们还需要在UNIX上编译我们的代码.我们遇到像#include这样简单的问题.
在AS/400上,我们需要写:
#include "*LIBL/H/MYLIB"
在UNIX上,我们需要编写
#include "MYLIB.H"
目前我们在每个C/C++文件的顶部都有这个(丑陋的)块:
#ifndef IS_AS400
#include "*LIBL/H/MYLIB"
/* others here */
#else
#include "MYLIB.H"
/* others here */
#endif
我们想要一个统一的宏.这可能吗?我不知道怎么写.
理想情况下,生成的语法将是:
SAFE_INCLUDE("MYLIB") 这将在每个平台上正确扩展.
请指教.
您可以将平台的前缀定义为宏.喜欢
#define STRINGY(STR) #STR
#define SAFE_INCLUDE(HDR) STRINGY(HDR)
#ifndef IS_AS400
#define SAFE_INCLUDE(LIB) STRINGY(*LIBL/H/##LIB)
#else
#define SAFE_INCLUDE(LIB) STRINGY(LIB##.H)
#endif
Run Code Online (Sandbox Code Playgroud)
你可以用它作为
#include SAFE_INCLUDE(MYLIB)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |