在VS2010下編寫C應注意的問題(和編寫C++的區別)
用VS2010來編譯C程式,在網上看到說在屬性→C/C++→高階 對話方塊裡面更改編譯為:C程式碼(/TC)就可以進行C語言原始碼編譯工作了,但是有時候不修改這個選項也不影響使用C來編譯,那到底需不需要修改呢?
【C程式碼(/TC)和C++程式碼(/TP)有何區別?】
MSDN:
/Tc 選項指定 filename 為 C 原始檔,即使它沒有 .c 副檔名。/Tp 選項指定 filename 為 C++ 原始檔,即使它沒有 .cpp 或 .cxx 副檔名。選項和 filename 之間的空格是可選的。每個選項指定一個檔案;若要指定其他檔案,請重複此選項。
/TC 和 /TP 是 /Tc 和 /Tp 的全域性變數。它們指定編譯器將在命令列上命名的所有檔案視為 C 原始檔 (/TC) 或 C++ 原始檔 (/TP),而不考慮它們在命令列上相對於選項的位置。這些全域性選項可通過 /Tc 或 /Tp 在單個檔案上重寫。
/Tcfilename
/Tpfilename
/TC
/TP
引數
filename
C 或 C++ 原始檔。
備註
預設情況下,CL 假定副檔名為 .c 的檔案是 C 原始檔,副檔名為 .cpp 或 .cxx 的檔案是 C++ 原始檔。
在 Visual Studio 開發環境中設定此編譯器選項
開啟此專案的“屬性頁”對話方塊。有關詳細資訊,請參見如何:開啟專案屬性頁。
單擊“C/C++”資料夾。
單擊“高階”屬性頁。
修改“編譯為”屬性。
以程式設計方式設定此編譯器選項
請參見 CompileAs。
示例
下列 CL 命令列指定 MAIN.c、TEST.prg 和 COLLATE.prg 都是 C 原始檔。CL 將不識別 PRINT.prg。
複製程式碼
CL MAIN.C /TcTEST.PRG /TcCOLLATE.PRG PRINT.PRG
下列 CL 命令列指定 TEST1.c、TEST2.cxx、TEST3.huh 和 TEST4.o 作為 C++ 檔案編譯,TEST5.z 作為 C 檔案編譯。
複製程式碼
CL TEST1.C TEST2.CXX TEST3.HUH TEST4.O /Tc TEST5.Z /TP
請參見
參考
編譯器選項
設定編譯器選項
C語言和C++語言是兩種不同的語言,不過C++相容了大多C的語言特性這個設定決定了編譯器按照哪個語言規則來進行編譯,如果不涉及兩種語言中存在差異的語法那麼用哪個編譯器都是一樣的
編譯器把.c檔案當作C程式編譯,把.cpp檔案當作C++編譯,即IDE中是根據檔案字尾自動選擇用C/C++編譯器編譯
由於C和C++在語法以及編譯的一些細節上有所不同,所以如果在.c裡寫C++就會出錯了。
很明顯裡面的東西都是C++的,儲存成.c編譯就出錯了