gpt4 book ai didi

c - 通过结构不良的 makefile 系统定义多词

转载 作者:行者123 更新时间:2023-12-04 02:17:55 25 4
gpt4 key购买 nike

我正在对遗留项目做一个小改动,我需要向命令行传递一个包含多个单词的定义,如下所示:

CFLAGS += -DXXX="A B"

不幸的是,根据这个项目的结构方式,我的 makefile 片段无法访问 CFLAGS 变量,或与此相关的任何其他全局变量。我只公开了类似 CUSTOM_DEFINES 的内容,稍后会附加到 CFLAGS

据我所知,makefiles 最终做了等同于

CFLAGS += $(addprefix -D,$(CUSTOM_DEFINES))

这导致此命令行选项:-DXXX="A -DB",相当于 #define XXX A -DB 而不是 #define XXX A B.

是否有一些神奇的序列可以添加到 CUSTOM_DEFINES 以得到正确的结果?


避免 XY 问题,这里有一些上下文:

我试图强制一个脆弱的旧系统吞下一个损坏的系统 header (我也无法更改)。一处 header 未定义返回类型:

/*implicit int */ SomeLegacyFunction(int a, int b) { return a + b; }

编译器不会接受这个(我真的不能改变编译器参数)。由于 SomeLegacyFunction 从未使用过,我只想做类似的事情:

#define SomeLegacyFunction int SomeLegacyFunction

并编译它。任何关于如何以其他方式做到这一点的建议都同样受欢迎。

最佳答案

CUSTOM_DEFINES=Func="int/**/Func"

CUSTOM_DEFINES=Func="int(Func)"

可能值得一试。在 C 语言中你几乎从来不需要空格。

关于c - 通过结构不良的 makefile 系统定义多词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32906370/

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