『壹』 vscode c語言如何編譯多個源文件
你可以寫一個類似的任務在task里:在args一行,寫你需要編譯的文件
{
"label": "build my project",
"type": "shell",
"command": "C:\\MinGW\\bin\\g++.exe",
"args": ["main.cpp", "test.cpp", "-o", "test.exe"],
"group": "build",
},
你還可以寫一個make任務,對於文件多的,手寫不現實,可以做一個makefile
這樣你只要在launch裡面
preLaunchTask,寫上這個build my project,就可以了。
『貳』 C語言中,如何用多個文件編寫程序
將一個函數寫在一個文件里,然後再在另一個文件里用「include」包含這個文件。
舉例:
在文件c1.c里編一個函數:
void printWord(){
printf("Hello!world!");
}
再建立一個文件c2.c,文件開頭寫上#include"c1.c",就可以調用c1.c里的函數printword()了
這樣通過include操作,可以把任意多個文件連接起來,編譯成一個程序運行。
『叄』 c語言中多個文件的編譯問題
第一個問題
請問,我是不是該這樣做:
在main.c中#include
在fun.c中同樣#include
(好像是必需的,請詳細解釋)
這是必需的。因為編譯器只是把包含文件的代碼復制過來,既然你二個文件中都用到頭文件的內容,那當然要包含頭文件,否則就會出錯。
我的觀點,如果這兩步都是必需的
那麼當有很多個比如10個.c程序每個里頭都要#include
那麼文件是不是會特別大,當有100個.c程序都要包含一下的話,那麼不是非常重復么?)
那當然是會重復的。不過這個對程序的運行效率沒任何影響,只是在編譯過程中對文件的分析時間會稍長些,這也是沒有辦法的事,全看代碼編寫者如何組織結構了。
第二個問題:
會的。解決的方法就是在可能被多次包含的頭文件中開頭加上#pragma
once,那樣就可以保證此頭文件代碼只被執行一次,而不會造成頭文件中函數多次重復定義至於引起這種情況的情況。當然你也可以自己用#ifdef等預編譯處理來解決。你問的問題不就是這種情況么?main.c和fun.c中都包含頭文件tou.h
第三個問題:
當我在main.c中這樣
#define
unchar
unsigned
char
那麼當我在fun.c中還需要重新創建替換宏unchar嗎
可以不在創建而直接使用嗎?
答案是需重新創建,不能直接使用。但你可以把一些在多個文件中使用的宏、全局變數等統一定義到一個頭文件中,那這樣就可以避免多次定義了。