使用CMocka的mock功能编译示例时出现参数缺失报错如何解决
问题原因
你当前在Windows PowerShell环境下执行编译命令,该报错是PowerShell的语法解析错误,和gcc参数本身的语法无关。
PowerShell默认将逗号识别为数组分隔符,你执行的命令中-Wl,--wrap=chef_cook包含的逗号会被PowerShell优先解析为参数拆分标记,导致传递给gcc的参数被错误拆分,最终触发参数缺失的报错。
解决方案
有两种可直接使用的修复方式:
- 方式一(更稳妥,推荐):将包含逗号的链接器参数整体用单引号包裹,修改后的命令如下:
gcc -g '-Wl,--wrap=chef_cook' cmocka.c waiter_test_wrap.c chef.c
- 方式二:使用PowerShell的转义字符(反引号`)对逗号进行转义:
gcc -g -Wl`,--wrap=chef_cook cmocka.c waiter_test_wrap.c chef.c
补充说明
如果你在WSL Bash、Git Bash、MSYS2 Bash等类Unix shell环境中执行原始的编译命令,不会触发该解析错误。
内容的提问来源于stack exchange,提问作者Rony Kositsky
相关产品推荐
相关产品推荐

