❶ 如何判斷一段程序是由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
❸ 怎樣區分一個文件是C編譯的,還是C++編譯的
如果有msvcrt.dll,說明調用了c語言庫函數
如果有msvcp*.dll,說明調用了c++標准庫
❹ 怎麼判斷一段程序是C編譯程序的還是C++編譯程序的
c++的程序,一般包含這句聲明:using namespace std;
c++的主程序入口為:int main(int argc, char *argv[])
而c語言的程序入門為: int main(void)
❺ 如何判斷一段程序是由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++編譯程序
答案:
#ifdef
__cplusplus
cout<<"c++";
#else
cout<<"c";
#endif
人家HR問的是編程手段來判斷,判斷啊!!!
又不是要你來說教,好不好,各位真是不知所雲。。。。。
❼ 怎樣辨別是用C編譯的代碼,還是C++編譯的代碼
首先:要看你的編譯環境,有的編譯環境是區分C/C++的,而像VC++這樣的,就不區分,兼容。
一般情況來說,C語言代碼是可以用C++編譯器編譯的,但是C編譯器,就一般不能編譯C++代碼。
自己區分的話:
1、包含頭文件格式:
#include<iostream>
和有using namespace的,都應該屬於C++的內容。
而#include<iostream.h>也應該是C++,因為它屬於C++的庫,由於C++代碼可以應用C語言的函數庫,所以比較難區分。
比如#include<stdio.h>的,不一定就是C語言代碼。
2、出現class定義的類的,無疑是C++代碼。
3、應用到STL,模板等特性的,也應該算是C++代碼。
不應該強行區分,因為本來C++就是對C的擴展,如果強制用C語言編寫程序,則可以再看一些C語言的書,重點看出兩者的不同。
❽ 如何判斷一段程序是由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++編譯程序編譯的
簡單的說,由於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++編譯環境編譯完成的
可以用PEID試下,還有如果文件編譯的時候帶編譯信息是能夠查到的,前提是要有一定的基礎,對於creaker來說這應該還是比較容易識別的,你可以到看雪上看看或尋求幫助