Stringify CMake预处理器令牌

时间:2016-07-06 21:30:52

标签: c string cmake c-preprocessor token

我使用CMake编译这个示例程序:

的CMakeLists.txt

cmake_minimum_required (VERSION 3.0.0)
set(PROJECT_NAME Main)
project(${PROJECT_NAME})

add_definitions(-DSTRING=“test”)

add_executable(${PROJECT_NAME} main.c)

的main.c

#include <stdio.h>

int main(void)
{
    puts(STRING);
}

编译给出了以下错误:

error: expected expression
    puts(STRING);
         ^
<command line>:1:16: note: expanded from here
#define STRING "test"

如何在不修改 main.c的情况下对此预处理程序令牌进行字符串化?

1 个答案:

答案 0 :(得分:3)

您使用的字符getAuthPassword在C中无效:

您必须在CMakeLists.txt中为error: expected expression puts(STRING); ^ <command line>:1:16: note: expanded from here #define STRING “test” ^ 1 error generated. 更改,您的程序才会编译。