【转】vscode下编译告警“undefined reference”?三步教你如何解决
轉自:vscode下編譯告警“undefined reference”?三步教你如何解決_squall0984的博客-CSDN博客
?
近些年來,由于VS Studio體積龐大、價格昂貴等原因,越來越多的C/C++開發者轉投VSCode的懷抱。VSCode有著免費1、開源2、多平臺支持、占用系統3資源少、插件豐富、界面美觀等諸多特點。對于初學者來說,是非常方便使用的IDE。許多同學在使用VSCode時,在同一文件夾下,存在多個文件時,編譯器無法找到引用的.h文件定義的問題,通過簡單幾步配置,即可此解決問題。
- 打開TEST文件夾,創建hello.c, hello.h文件,
hello.c
#include <stdio.h>void hello() {printf("hello\n"); }hello.h
#ifndef __HELLO_H__ #define __HELLO_H__extern void hello();#endif- 創建main.c
main.c
- 選擇main.c,Run->Start Debugging,會出現編譯器報錯“undefined reference to `hello’”
出現此問題的原因,是編譯器僅編譯了main.c文件,而未編譯hello.c文件。
- 在VSCode工程界面中,按壓Ctrl+Shift+p,在彈出的輸入框中,輸入Tasks后,從提示選單中選擇Configure Task,再選擇C/C++:gcc.exe build active file
- 此時,.VSCode目錄下會生成tasks.json文件
tasks.json
{"version": "2.0.0","tasks": [{"type": "shell","label": "C/C++: gcc.exe build active file","command": "D:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe","args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "D:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin"},"problemMatcher": ["$gcc"],"group": "build"}] }- 將args參數中的${file}修改為${fileDirname}\\*.c,再次執行Run->Start Debugging,可以看到終端中成功的顯示了"hello"字符
tasks.json文件中的args參數,實際上就是調用gcc時,后面所跟的參數在初始的配置中,實際上編譯器執行的命令為gcc -g main.c -o main.exe,而修改后的配置中,執行的命令是gcc -g main.c hello.c -o main.exe,這是由于參數${file}代表的是被編譯的當前文件,而參數${fileDirname}\\*.c代表的是當前目錄下的所有.c文件。
同時,在此附上.json文件中,各變量名所代表的含義,共參考,查看來源。
| ${workspaceRoot} | 當前打開的文件夾的絕對路徑+文件夾的名字 |
| ${workspaceRootFolderName} | 當前打開的文件夾的名字 |
| ${file} | 當前打開正在編輯的文件名,包括絕對路徑,文件名,文件后綴名 |
| ${relativeFile} | 從當前打開的文件夾到當前打開的文件的路徑,如當前打開的是test文件夾,當前的打開的是main.c,并有test/first/second/main.c 那么此變量代表的是 first / second / main.c |
| ${fileBasename} | 當前打開的文件名+后綴名,不包括路徑 |
| ${fileBasenameNoExtension} | 當前打開的文件的文件名,不包括路徑和后綴名 |
| ${fileDirname} | 當前打開的文件所在的絕對路徑,不包括文件名 |
| ${fileExtname} | 當前打開的文件的后綴名 |
| ${cwd} | 任務開始運行時的當前工作目錄 |
| ${lineNumber} | 前打開的文件,光標所在的行數 |
VSCode使用的是 MIT Lisense, 可隨意下載, 分發, 商用等.?點擊下載???
github可直接看到源碼,?點擊查看,開源讓更多開發者參與進來, 集思廣益, 推動這款優秀的 IDE 發展.???
下載vscode 1.29.0, 只有 44 MB 大小,安裝完約 189 MB。內存上, 相對于 eclipse, vscode 占用內存更少. eclipse 約占用 478 MB(1 個進程), vscode 約共占用 200 MB(6 個進程).???
總結
以上是生活随笔為你收集整理的【转】vscode下编译告警“undefined reference”?三步教你如何解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小心有诈!高考生遇到这些“好事”需警惕
- 下一篇: 日元汇率大跌 日本民众被“吓坏”:正式恢