導航:首頁 > 源碼編譯 > 怎麼判斷程序編譯

怎麼判斷程序編譯

發布時間:2022-10-05 05:43:38

① 怎樣判斷一段程序是由C編譯程序還是由C++編譯程序編譯的

簡單的說,由於C語言是沒有重載函數的概念的,所以C編譯器編譯的程序里,所有函數只有函數名對應的入口。而由於C++語言有重載函數的概念,如果只有函數名對應入口,則會出線混淆。所以C++編譯器編譯的程序,應該是函數名+參數類型列表對應到入口。
注意,因為main函數是整個程序的入口,所以main是不能重載的,所以,如果一個程序只有main函數,是無法確認是C還是C++編譯器編譯的。
可以通過nm來查看函數名入口。
如一個函數
int foo(int i,float j)
C編譯的程序通過nm查看
f 0x567xxxxxx (地址)
C++編譯程序,通過nm
f(int,float) 0x567xxxxxx

② 如何判斷一段程序是由c 編譯程序還是由c++編譯 程序編譯的

ANSIC標准中有一個__cplusplus標識符,當你編譯C++程序時,這個標識符就會被定義;當你編譯C程序時,這個標識符不會被定義。這樣,你就可以檢查程序是不是用C++編譯程序編譯的,請看下例: #ifdef __cplusplus /* Is __cplusplus deftned? */ #define USING_C FALSE /* Yes,we are not usingC*/ #elSe #define USING_C TRUE /* NO,we are usingC*/ #endif 當對上例進行編譯預處理時,預處理程序首先檢查標識符__cplusplus是否已被定義——如果C被定義,它就將USING_C賦值為FALSE;反之,它就將USING_C賦值為TRUE。此後,你就可以在程序中檢查USING_C的值,並由此判斷程序是不是用C++編譯程序編譯的。

③ 如何判斷一段代碼是C編譯程序還是C++編譯程序

答案:
#ifdef
__cplusplus
cout<<"c++";
#else
cout<<"c";
#endif
人家HR問的是編程手段來判斷,判斷啊!!!
又不是要你來說教,好不好,各位真是不知所雲。。。。。

④ 如何判斷一段程序是由C 編譯程序還是由C++編譯程序編譯的

以下是在論壇中看到的兩種解釋: (1)如果是要你的代碼在編譯時發現編譯器類型,就判斷_cplusplus或_STDC_宏,通常許多編譯器還有其他編譯標志宏, #ifdef __cplusplus cout<<"c++";#else cout<<"c";#endif如果要判斷已經編譯的代碼的編譯類型,就用nm查一下輸出函數符號是否和函數名相同。(相同為c,不同為c++。詳解見下面)(2)簡單是說,由於c語言是沒有重載函數的概念的,所以c編譯器編譯的程序里,所有函數只有函數名對應的入口。而由於c++語言有重載函數 的概念,如果只有函數名對應的入口,則會出現混淆,所以c++編譯器編譯的程序,應該是函數名+參數類型列表對應到入口。 注意,因為mian函數是整個程序的入口,所以mian是不能有重載的,所以,如果一個程序只有main函數,是無法確認是c還是c++編譯器編譯的可以通過nm來查看函數名入口如一個函數int foo(int i, float j) c編譯的程序通過nm查看 foo 0x567xxxxxx (地址) c++編譯程序,通過nm查看

⑤ 關於如何判斷gcc之類的編譯器的編譯結果

我們再使用gcc編譯的時候可以讓他的輸出信息保存到文件當中

gccmain.c-omain&>status.txt

上面的命令就是將gcc編譯的信息保存到status.txt文件中,然後我們再程序中讀取文件,看文件是否有內容,沒有內容就說明沒有報錯和警告,編譯成功。有內容就對每一行內容進行判斷,看是warring還是error,只有warring也代表編譯成功,有error代表編譯失敗,然後把這些報錯信息都列印出來就好了。

下面看一下例子:

⑥ 如何判斷一段程序是由C 編譯程序還是由C++編譯程序編譯的

以下是在論壇中看到的兩種解釋: (1)如果是要你的代碼在編譯時發現編譯器類型,就判斷_cplusplus或_STDC_宏,通常許多編譯器還有其他編譯標志宏, #ifdef __cplusplus cout<<"c++";#else cout<<"c";#endif如果要判斷已經編譯的代碼的編譯類型,就用nm查一下輸出函數符號是否和函數名相同。(相同為c,不同為c++。詳解見下面)(2)簡單是說,由於c語言是沒有重載函數的概念的,所以c編譯器編譯的程序里,所有函數只有函數名對應的入口。而由於c++語言有重載函數 的概念,如果只有函數名對應的入口,則會出現混淆,所以c++編譯器編譯的程序,應該是函數名+參數類型列表對應到入口。 注意,因為mian函數是整個程序的入口,所以mian是不能有重載的,所以,如果一個程序只有main函數,是無法確認是c還是c++編譯器編譯的可以通過nm來查看函數名入口如一個函數int foo(int i, float j) c編譯的程序通過nm查看 foo 0x567xxxxxx (地址) c++編譯程序,通過nm查看

⑦ 如何判斷一個程序是C編譯的還是C++編譯的

一般情況來說,C語言代碼是可以用C++編譯器編譯的,但是C編譯器,就一般不能編譯C++代碼。
自己區分的話:
1、包含頭文件格式:
#include
和有using namespace的,都應該屬於C++的內容。
而#include也應該是C++,因為它屬於C++的庫,由於C++代碼可以應用C語言的函數庫,所以比較難區分。
比如#include的,不一定就是C語言代碼

⑧ 如何判斷一段程序是由c 編譯程序還是由c++編譯程序編譯的

通常的編譯C程序的軟體也可以編譯C++的程序,C++也是建立在C的基礎上的。通常C語言的文件是以(.c)為後綴的,而c++的文件基本都以(.cpp)為後綴的。關於如何區分還要看程序裡面的某些關鍵的函數,頭文件等來區分。

⑨ 如何判斷一段程序是由C編譯程序還是由C++編譯程序編譯的

C編譯時定義了_cplusplus,C++編譯時定義了_STDC_#ifdef _cplusplus /*判斷是否用C++編譯器?*/ #define USING_C 0 /*是用C編譯器*/ #else #define USING_C 1 /*是用C++編譯器*/ #endif #include <stdio.h> int main() { if(USING_C) printf("C++\n"); else printf("C\n"); system("pause"); return 0; } 編寫C與C++兼容的代碼所需的宏如下:#ifdef __cplusplus extern "C" { #endif // 具體的代碼 #ifdef __cplusplus } #endif

閱讀全文

與怎麼判斷程序編譯相關的資料

熱點內容
固態硬碟編譯器重建 瀏覽:387
怎樣編輯硬碟文件夾 瀏覽:654
安卓系統如何打開電腦軟體 瀏覽:566
android監聽事件處理 瀏覽:743
h3c伺服器怎麼看功率 瀏覽:119
前端錄制文件如何上傳伺服器 瀏覽:536
雅黑pdf 瀏覽:458
python使用領域 瀏覽:880
買蘭博基尼用什麼app 瀏覽:137
android關閉後台運行 瀏覽:505
python輸出路徑為超鏈接 瀏覽:533
caxa為什麼沒有加密鎖 瀏覽:792
伺服器怎麼設置才能用IP訪問 瀏覽:663
郵件附件加密後打開能顯示嗎 瀏覽:724
榮耀x10拍照演算法 瀏覽:569
androidgradle配置簽名 瀏覽:96
文件夾左邊的空心三角符號是什麼 瀏覽:288
app英語音頻試卷掃碼怎麼聽 瀏覽:613
字元串編譯預處理 瀏覽:704
蘋果手機怎麼會顯示多個App 瀏覽:241