使用GCC -D选项

时间:2018-09-19 13:55:26

标签: c gcc

我做了一个最小的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)

1 个答案:

答案 0 :(得分:3)

shell 会从您传递的字符串中删除引号。您需要对引号进行转义以将其保留在宏中:

arm-none-eabi-gcc main.c -DMBEDTLS_CONFIG_FILE=\"test.h\"