當前位置:首頁 » 編程軟體 » 判斷一段程序的編譯

判斷一段程序的編譯

發布時間: 2022-04-22 16:11:13

A. C語言文件的編譯與執行的四個階段並分別描述

開發C程序有四個步驟:編輯、編譯、連接和運行。

任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。

1、預處理:導入源程序並保存(C文件)。

2、編譯:將源程序轉換為目標文件(Obj文件)。

3、鏈接:將目標文件生成為可執行文件(EXE文件)。

4、運行:執行,獲取運行結果的EXE文件。

(1)判斷一段程序的編譯擴展閱讀:

將C語言代碼分為程序的幾個階段:

1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。

2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。

3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。

4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。

B. 如何判斷一段程序是由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++也是建立在C的基礎上的。通常C語言的文件是以(.c)為後綴的,而c++的文件基本都以(.cpp)為後綴的。關於如何區分還要看程序裡面的某些關鍵的函數,頭文件等來區分。

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

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

E. C語言編譯器會編譯改變過的代碼,而不會編譯沒有改動的代碼。 我想知道它是怎麼判斷程序是否有唄修改過的

編譯器要記錄你的編譯生成文件,比如obj、exe等的生成日期,發現與相關的文件如.c源文件、obj等日期舊時則選擇對此部分重新編譯。
特別地,它記錄所有相關文件,比如你新修改了某頭文件.h,編譯系統會逐一比較所有使用這個.h文件的編譯結果,如果發現時間舊了就重新編譯它們。

F. 怎樣判斷一段程序是由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

G. 判斷一個程序是C編譯的還是C++編譯

如果編譯器在編譯cpp文件那麼__cplusplus 就會被定義 如果是一個c文件在被編譯那麼__STDC__就會被定義

H. 如何判斷一段程序是由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

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

1.文件就不同
c++有輸入輸出流文件即#include
c用的是scanf
和printf
而c++用的是cout
和cin
2.c++有類的定義,c是沒有的

J. 怎麼判斷一個程序使用什麼語言寫的

使用查殼工具PEID 。

PEiD是很好用的查殼工具,可以很簡單的知道軟體是不是加了殼,有了這個PEiD ,幾乎可以偵測出軟體所有的殼,其數量已超過470 種PE文檔 的加殼類型和簽名,另外PEiD還可識別出exe文件是用什麼語言編寫的,比如:VC++、Delphi、VB或Delphi等。

peid功能介紹

1、正常掃描模式:PEiD可在PE文檔的入口點掃描所有記錄的簽名。

2、深度掃描模式:可深入掃描所有記錄的簽名,這種模式要比上一種的掃描范圍更廣、更深入。

3、核心掃描模式:PEiD可完整地掃描整個PE文檔,建議將此模式作為最後的選擇。

(10)判斷一段程序的編譯擴展閱讀

PEID的主要模塊:

1、任務查看模塊:可以掃描並查看當前正在運行的所有任務和模塊,並可終止其運行;

2、多文件掃描模塊:可同時掃描多個文檔。選擇「只顯示PE文件」可以過濾非PE文檔;選擇「遞歸掃描」可掃描所有文檔,包括子目錄。

3、Hex十六進制查看模塊:可以以十六進制快速查看文檔。

熱點內容
bp神經網路的學習演算法 發布:2025-04-03 09:01:19 瀏覽:597
重播編程 發布:2025-04-03 08:47:36 瀏覽:847
汽車配置買的太低怎麼辦 發布:2025-04-03 08:34:31 瀏覽:277
shell腳本中執行shell 發布:2025-04-03 08:26:36 瀏覽:781
給期貨賬號轉賬為什麼要銀行密碼 發布:2025-04-03 07:55:20 瀏覽:623
呼叫中心話術腳本 發布:2025-04-03 07:29:22 瀏覽:115
android密碼解鎖 發布:2025-04-03 07:28:47 瀏覽:508
安卓手機為什麼老是藍屏 發布:2025-04-03 07:28:36 瀏覽:325
windows搭建dns緩存伺服器 發布:2025-04-03 07:28:33 瀏覽:385
自己搭建機房和伺服器 發布:2025-04-03 07:27:56 瀏覽:652