小编Ody*_*eus的帖子

C 预处理器 - 现有定义的前置路径

假设我有一个来自 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)

c c++ c-preprocessor

7
推荐指数
1
解决办法
160
查看次数

标签 统计

c ×1

c++ ×1

c-preprocessor ×1