假设我有一个来自 gcc -D 选项的定义,例如
gcc -DBINDIR=\"/usr/bin\"
Run Code Online (Sandbox Code Playgroud)
我想要的是在此现有定义之前添加路径,因此 BINDIR 类似于“/home/user/testbuild/usr/bin”
我试过的:
#define STRINGIZE_NX(A) #A
#define STRINGIZE(A) STRINGIZE_NX(A)
#define PRE_PATH "/home/user/testbuild"
#pragma message "PRE_PATH: " STRINGIZE(PRE_PATH)
#ifndef BINDIR
# error "BINDIR must be defined"
#else
# pragma message "BINDIR: " STRINGIZE(BINDIR)
# define TMP BINDIR
# pragma message "TMP: " STRINGIZE(TMP)
# undef BINDIR
# define BINDIR PRE_PATH TMP
# pragma message "BINDIR: " STRINGIZE(BINDIR)
# undef TMP
#endif
Run Code Online (Sandbox Code Playgroud)
在查看编译器输出时,在我看来,TMP 并未按照我预期的方式分配给 BINDIR 的值:
note: #pragma message: PRE_PATH: "/home/user/testbuild"
note: #pragma message: …Run Code Online (Sandbox Code Playgroud)