我做了一个最小的c文件(main.c)
#if !defined(MBEDTLS_CONFIG_FILE)
#error "not defined"
#else
#include MBEDTLS_CONFIG_FILE
#endif
int main(void)
{
while(1);
}
现在呼叫arm-none-eabi-gcc main.c
会得到error: #error "no defined"
,这没关系。
但是调用arm-none-eabi-gcc main.c -DMBEDTLS_CONFIG_FILE="test.h"
会得到error: #include expects "FILENAME" or <FILENAME>
,因此它是已定义的,但没有达到我期望的值。
正确的语法是什么? (上下文:这在IDE中有效,但我想转向cmake)
答案 0 :(得分:3)
shell 会从您传递的字符串中删除引号。您需要对引号进行转义以将其保留在宏中:
arm-none-eabi-gcc main.c -DMBEDTLS_CONFIG_FILE=\"test.h\"