VS Code搭配MinGW编译C多文件程序报aireRectangle未定义引用错误
问题根因
这是典型的链接阶段错误,和代码语法、头文件包含逻辑无关:你执行编译时仅将exo1.c传入了编译指令,没有把实现aireRectangle函数的aire.c加入编译列表,链接器找不到函数的实际实现代码,就会抛出undefined reference to 'aireRectangle'报错,和VS Code是否识别项目文件没有关系,本质是编译指令缺少源文件参数。
对应解决方法
根据你平时的编译方式二选一即可:
- 手动在终端敲命令编译:进入项目存放的文件夹,执行编译命令时把所有.c源文件都带上即可,正确命令如下:
gcc exo1.c aire.c -o exo1.exe
执行完直接运行生成的exo1.exe就能得到正确输出。 - 用VS Code右上角的默认运行按钮编译:需要修改C/C++插件的编译配置,打开项目根目录下
.vscode文件夹内的tasks.json文件,找到args配置段,把原来仅编译当前激活文件的"${file}"配置,替换为编译当前目录下所有C文件的规则,参考配置如下:
"args": [ "-fdiagnostics-color=always", "-g", "${fileDirname}\\*.c", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ],
配置里的${fileDirname}\\*.c表示编译当前编辑文件所在目录下所有后缀为.c的源文件,后续新增其他模块化的.c文件也不需要重复修改配置,不会再出现同类链接错误。
补充说明:你头文件里函数声明的参数名写的是
largeur,aire.c里函数实现的第一个参数名是longueur,这个差异不会影响编译运行,C语言中函数声明和实现的参数名不需要保持一致,只要参数类型、数量、返回值类型匹配就符合语法要求,不需要特意修改。
内容的提问来源于stack exchange,提问作者Kyuujin
相关产品推荐
相关产品推荐

