You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CMake的add_compile_definitions()重写数组初始化预定义宏?

在CMake中用add_compile_definitions重写数组初始化宏的正确方法

你的代码通过预处理器宏MY_CHAR_ARRAY初始化uint8_t数组,要在CMake里用add_compile_definitions重写这个宏,核心问题是CMake会把逗号当成参数分隔符,必须把整个宏值用引号包裹,才能让编译器正确接收完整的数组初始化列表。

正确写法

add_compile_definitions(MY_CHAR_ARRAY="{0xAA, 0xBB, 0xCC}")

之前写法失败的原因

你尝试的各种写法都没处理CMake的参数解析规则:

  • 不带引号时,逗号会被CMake识别为多个参数的分隔符,导致宏定义被拆成MY_CHAR_ARRAY={0xAA、0xBB、0xCC}三个部分,编译器无法正确解析
  • 其他格式(比如去掉逗号、合并十六进制值)不符合C语言数组初始化的语法,自然无法正确初始化数组

验证方式

可以通过查看CMake生成的编译命令(比如执行make VERBOSE=1或者ninja -v),确认编译器参数中是否包含-DMY_CHAR_ARRAY="{0xAA, 0xBB, 0xCC}",如果存在则说明宏定义已正确传递。

内容的提问来源于stack exchange,提问作者Brandon Dester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 22:30:57