【转】vscode下编译告警“undefined reference”?三步教你如何解决
轉(zhuǎn)自:vscode下編譯告警“undefined reference”?三步教你如何解決_squall0984的博客-CSDN博客
?
近些年來,由于VS Studio體積龐大、價(jià)格昂貴等原因,越來越多的C/C++開發(fā)者轉(zhuǎn)投VSCode的懷抱。VSCode有著免費(fèi)1、開源2、多平臺(tái)支持、占用系統(tǒng)3資源少、插件豐富、界面美觀等諸多特點(diǎn)。對(duì)于初學(xué)者來說,是非常方便使用的IDE。許多同學(xué)在使用VSCode時(shí),在同一文件夾下,存在多個(gè)文件時(shí),編譯器無法找到引用的.h文件定義的問題,通過簡(jiǎn)單幾步配置,即可此解決問題。
- 打開TEST文件夾,創(chuàng)建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- 創(chuàng)建main.c
main.c
- 選擇main.c,Run->Start Debugging,會(huì)出現(xiàn)編譯器報(bào)錯(cuò)“undefined reference to `hello’”
出現(xiàn)此問題的原因,是編譯器僅編譯了main.c文件,而未編譯hello.c文件。
- 在VSCode工程界面中,按壓Ctrl+Shift+p,在彈出的輸入框中,輸入Tasks后,從提示選單中選擇Configure Task,再選擇C/C++:gcc.exe build active file
- 此時(shí),.VSCode目錄下會(huì)生成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參數(shù)中的${file}修改為${fileDirname}\\*.c,再次執(zhí)行Run->Start Debugging,可以看到終端中成功的顯示了"hello"字符
tasks.json文件中的args參數(shù),實(shí)際上就是調(diào)用gcc時(shí),后面所跟的參數(shù)在初始的配置中,實(shí)際上編譯器執(zhí)行的命令為gcc -g main.c -o main.exe,而修改后的配置中,執(zhí)行的命令是gcc -g main.c hello.c -o main.exe,這是由于參數(shù)${file}代表的是被編譯的當(dāng)前文件,而參數(shù)${fileDirname}\\*.c代表的是當(dāng)前目錄下的所有.c文件。
同時(shí),在此附上.json文件中,各變量名所代表的含義,共參考,查看來源。
| ${workspaceRoot} | 當(dāng)前打開的文件夾的絕對(duì)路徑+文件夾的名字 |
| ${workspaceRootFolderName} | 當(dāng)前打開的文件夾的名字 |
| ${file} | 當(dāng)前打開正在編輯的文件名,包括絕對(duì)路徑,文件名,文件后綴名 |
| ${relativeFile} | 從當(dāng)前打開的文件夾到當(dāng)前打開的文件的路徑,如當(dāng)前打開的是test文件夾,當(dāng)前的打開的是main.c,并有test/first/second/main.c 那么此變量代表的是 first / second / main.c |
| ${fileBasename} | 當(dāng)前打開的文件名+后綴名,不包括路徑 |
| ${fileBasenameNoExtension} | 當(dāng)前打開的文件的文件名,不包括路徑和后綴名 |
| ${fileDirname} | 當(dāng)前打開的文件所在的絕對(duì)路徑,不包括文件名 |
| ${fileExtname} | 當(dāng)前打開的文件的后綴名 |
| ${cwd} | 任務(wù)開始運(yùn)行時(shí)的當(dāng)前工作目錄 |
| ${lineNumber} | 前打開的文件,光標(biāo)所在的行數(shù) |
VSCode使用的是 MIT Lisense, 可隨意下載, 分發(fā), 商用等.?點(diǎn)擊下載???
github可直接看到源碼,?點(diǎn)擊查看,開源讓更多開發(fā)者參與進(jìn)來, 集思廣益, 推動(dòng)這款優(yōu)秀的 IDE 發(fā)展.???
下載vscode 1.29.0, 只有 44 MB 大小,安裝完約 189 MB。內(nèi)存上, 相對(duì)于 eclipse, vscode 占用內(nèi)存更少. eclipse 約占用 478 MB(1 個(gè)進(jìn)程), vscode 約共占用 200 MB(6 個(gè)進(jìn)程).???
總結(jié)
以上是生活随笔為你收集整理的【转】vscode下编译告警“undefined reference”?三步教你如何解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小心有诈!高考生遇到这些“好事”需警惕
- 下一篇: 详细js读取execl内容并展示