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
相关产品推荐
相关产品推荐

