字符串化CMake预处理器令牌
我正在使用CMake编译这个示例程序: CMakeLists.txt:字符串化CMake预处理器令牌,c,string,cmake,c-preprocessor,token,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) #include <stdio.h> int main(void) { puts(
cmake_minimum_required (VERSION 3.0.0)
set(PROJECT_NAME Main)
project(${PROJECT_NAME})
add_definitions(-DSTRING=“test”)
add_executable(${PROJECT_NAME} main.c)
#include <stdio.h>
int main(void)
{
puts(STRING);
}
main.c:
cmake_minimum_required (VERSION 3.0.0)
set(PROJECT_NAME Main)
project(${PROJECT_NAME})
add_definitions(-DSTRING=“test”)
add_executable(${PROJECT_NAME} main.c)
#include <stdio.h>
int main(void)
{
puts(STRING);
}
#包括
内部主(空)
{
放置(字符串);
}
编译时出现以下错误:
错误:应为表达式
放置(字符串);
^
:1:16:注意:从此处展开
#定义字符串“test”
如何在不修改
main.c
的情况下对该预处理器令牌进行字符串化?您使用的字符“
和”
在c中无效:
error: expected expression
puts(STRING);
^
<command line>:1:16: note: expanded from here
#define STRING “test”
^
1 error generated.
错误:应为表达式
放置(字符串);
^
:1:16:注意:从此处展开
#定义字符串“test”
^
生成1个错误。
您必须更改CMakeLists.txt中的
“
和”
”,然后您的程序将进行编译。我希望您没有在CMakeLists.txt中实际使用“智能引号”,尽管您的示例显示了它们:-DSTRING=“test”
我使用的那些引号是我的Mac电脑键入的,您建议如何将它们更改为您的引号样式?一个选项就是复制并粘贴此“
@syb0rg可能取决于您的编辑器,看起来这是一个常见功能。。。可能是键盘的配置:这不是一个“解决办法”。问题在于你的键盘或任何用于编辑的应用程序,而不是Cmake。