我對 c 和一般編程相當陌生,并且正在觀看 freecodecamp.org youtube 頻道上的免費教程,當我使用多個 c 檔案時,我遇到了 g 和 clang 的多個編譯器錯誤。
這是 main.cpp
#include <iostream>
#include "compare.h"
int main(){
int maximum = max(134,156);
std::cout << "max : " << maximum << std::endl;
return 0;
}
這是 compare.cpp:
int max( int a, int b){
if(a>b)
return a;
else
return b;
}
還有 compare.h 檔案
int max( int a, int b);//Declaration
當我嘗試使用 clang 構建時,我得到:
架構 arm64 的未定義符號:“max(int, int)”,參考自:main-e30ba6.o 中的 _main ld:未找到架構 arm64 clang-13 的符號:錯誤:聯結器命令失敗,退出代碼為 1(使用 -v 查看呼叫)
當我使用 g 構建時,我得到:
架構 arm64 的未定義符號:“__Z3maxii”,參考自:cc3V4eOt.o 中的 _main ld:未找到架構 arm64 collect2 的符號:錯誤:ld 回傳 1 個退出狀態
我已經搜索了整個 youtube 和堆疊溢位,我發現的唯一解決方案是將檔案鏈接到
g main.cpp compare.cpp -o main
但這只奏效了一次,再也沒有奏效。任何幫助將不勝感激謝謝!
編輯
經過更多研究后,唯一給我明確答案的是用 clang 構建,得到錯誤,然后運行:
clang main.cpp compare.cpp -o main
但是每次我對代碼進行更改時,我都必須這樣做,這似乎很乏味,必須有更好的方法。此外,如果我有多個 .cpp 檔案,我也必須將它們運行到命令中。
uj5u.com熱心網友回復:
您可以通過快捷方式在 VScode 中構建多個 cpp 檔案。
