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

VSCode中Code Runner用*符号运行C/C++文件报错求助

解决VSCode Code Runner中C/C++通配符编译错误的问题

问题原因

Windows下的CMD终端不会自动展开*.c/*.cpp这类通配符,而GCC本身不负责处理通配符——通配符需要由shell(如Bash、PowerShell)先解析成目录下的具体文件名,再传递给编译器。当Code Runner用CMD执行编译命令时,*.c会被直接当作文件名传给GCC,GCC找不到名为*.c的文件,就会抛出Invalid argument错误。

解决办法

方法一:改用PowerShell处理命令

修改Code Runner的settings.json中C/C++的执行命令,让PowerShell来解析通配符:

"c": "cd $dir && powershell -Command \"gcc *.c -o $fileNameWithoutExt; & $dir$fileNameWithoutExt\"",
"cpp": "cd $dir && powershell -Command \"g++ -std=c++14 *.cpp -o $fileNameWithoutExt; & $dir$fileNameWithoutExt\""

PowerShell会自动将*.c展开为目录下所有C源文件的列表,再传递给GCC编译。

方法二:将Code Runner的终端改为Git Bash(需已安装Git)

在VSCode的设置中添加或修改以下配置,指定Code Runner使用Git Bash作为终端:

"code-runner.terminalShell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"

Bash原生支持通配符展开,修改后你原来的编译命令就能正常工作。

方法三:手动指定所有源文件(仅适合少量文件场景)

如果目录下C/C++文件不多,可以直接把*.c替换成具体的文件名,例如:

"c": "cd $dir && gcc file1.c file2.c -o $fileNameWithoutExt && $dir$fileNameWithoutExt"

这种方式无需依赖其他shell,但文件数量增加时会很繁琐。

验证

修改配置后重启VSCode,重新运行Code Runner编译C/C++文件,即可正常编译目录下所有对应后缀的源文件。

内容的提问来源于stack exchange,提问作者Arshiya Moallem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:13:11