gpt4 book ai didi

c - 在 C 源代码中接收 makefile 参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:08 24 4
gpt4 key购买 nike

我想像这样调用一个 makefile:使 uj LOCATION=my_room 并让 my_room 出现在打印输出中。

例如:

    print(" LOCATION is %s \n", LOCATION);

应该打印 LOCATION is my_room。如果没有给出 LOCATION 参数,它应该打印 undefined。

我试过以下方法。在我的生成文件中:

ifndef LOCATION
LOCATION = "undefined"
endif

CFLAGS += -DLOCATION=$(LOCATION)

然后调用上面的打印函数,但是这会抛出编译错误。我错过了什么。你能帮忙吗?

编辑:添加了编译时的错误。

    In file included from ../../uJ/cerberOS_BSP.h:4:0,
from ../../uJ/main_upnp.c:3:
../../uJ/main_upnp.c: In function ‘printDiagnostics’:
../../uJ/cerberOS_debug.h:15:59: error: expected expression before ‘)’ token
#define print(FORMAT,args...) printf_P(PSTR(FORMAT),##args)
^
../../uJ/main_upnp.c:35:2: note: in expansion of macro ‘print’
print(" LOCATION (as s) is %s \n", LOCATION);

最佳答案

字符串的引号丢失,因此它将扩展为

print("LOCATION 是 %s\n", undefined);

尝试:

CFLAGS += -DLOCATION=\"$(LOCATION)\"

这将扩展到

print("LOCATION 是 %s\n", "undefined");

这就是你想要的。

关于c - 在 C 源代码中接收 makefile 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41239398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com