導航:首頁 > 源碼編譯 > 去掉源碼中的註解

去掉源碼中的註解

發布時間:2024-10-18 02:32:21

Ⅰ 問下計算機大神,C語言編譯執行時會自動去掉源代碼的注釋符,那麼這個去掉是有規則的還是無規則的亦或

一般情況下是不會反編譯出來的,但也有例外。
c語言是在預處理階段把所有的注釋全部幹掉的。編譯器不接受任何注釋,會直接報錯。
如果你的IDE能提供一個類似於插件之類的工具,在c程序提交編譯之前自動把你所有的注釋變進程序正文中做成那種由雙引號標識的字元串(例如添加一條語句char * _comm_1="Built on 2013-11-11";),而且之後沒有使用類似於混淆器這樣的防止反編譯的技術,那麼對軟體反匯編後是可以看到它們的。
但是正常情況下別人是不可能直接從軟體反編譯的結果上去找你的程序注釋的。

java編譯時註解和運行時註解有什麼區別

重寫,重載,泛型,分別是在運行時還是編譯時執行的

1. 方法重載是在編譯時執行的,因為,在編譯的時候,如果調用了一個重載的方法,那麼編譯時必須確定他調用的方法是哪個。如:

當調用evaluate("hello")時候,我們在編譯時就可以確定他調用的method #1.

2.
方法的重寫是在運行時進行的。這個也常被稱為運行時多態的體現。編譯器是沒有辦法知道它調用的到底是那個方法,相反的,只有在jvm執行過程中,才知曉到底是父子類中的哪個方法被調用了當有如下一個介面的時候,我們是無法確定到底是調用父類還是子類的方法

3.
泛型(類型檢測),這個發生在編譯時。編譯器會在編譯時對泛型類型進行檢測,並吧他重寫成實際的對象類型(非泛型代碼),這樣就可以被JVM執行了。這個過程被稱為"類型擦除"。

類型擦除的關鍵在於從泛型類型中清除類型參數的相關信息,並且再必要的時候添加類型檢查和類型轉換的方法。

類型擦除可以簡單的理解為將泛型java代碼轉換為普通java代碼,只不過編譯器更直接點,將泛型java代碼直接轉換成普通java位元組碼。類型擦除的主要過程如下:

1). 將所有的泛型參數用其最左邊界(最頂級的父類型)類型替換。

2). 移除所有的類型參數。

在編譯後變成:

4. 註解。註解即有可能是運行時也有可能是編譯時。

如java中的@Override註解就是典型的編譯時註解,他會在編譯時會檢查一些簡單的如拼寫的錯誤(與父類方法不相同)等

同樣的@Test註解是junit框架的註解,他是一個運行時註解,他可以在運行時動態的配置相關信息如timeout等。

5. 異常。異常即有可能是運行時異常,也有可能是編譯時異常。

RuntimeException是一個用於指示編譯器不需要檢查的異常。RuntimeException
是在jvm運行過程中拋出異常的父類。對於運行時異常是不需要再方法中顯示的捕獲或者處理的。

已檢查的異常是被編譯器在編譯時候已經檢查過的異常,這些異常需要在try/catch塊中處理的異常。

6. AOP. Aspects能夠在編譯時,預編譯時以及運行時使用。

1).
編譯時:當你擁有源碼的時候,AOP編譯器(AspectJ編譯器)能夠編譯源碼並生成編織後的class。這些編織進入的額外功能是在編譯時放進去的。

2). 預編譯時:織入過程有時候也叫二進制織入,它是用來織入到哪些已經存在的class文件或者jar中的。

3). 運行時:當被織入的對象已經被載入如jvm中後,可以動態的織入到這些類中一些信息。

7. 繼承:繼承是編譯時執行的,它是靜態的。這個過程編譯後就已經確定

8. 代理(delegate):也稱動態代理,是在運行時執行。

閱讀全文

與去掉源碼中的註解相關的資料

熱點內容
小杜app上怎麼啟用 瀏覽:305
為什麼伺服器喇叭喊了一次就不行 瀏覽:480
phpdbo驅動 瀏覽:255
程序員尋找轉行建議 瀏覽:632
psgrepjava 瀏覽:415
夢幻誅仙12職業變態源碼 瀏覽:370
汽車的控制是怎麼編程的 瀏覽:686
穩定的ip地址伺服器 瀏覽:641
python多線程編程教程 瀏覽:252
筆記本編程電腦排行榜 瀏覽:32
微信好友緩存文件在哪個文件夾 瀏覽:614
javafloat小數點後兩位小數 瀏覽:166
澳門pdf 瀏覽:409
es解壓文件默認路徑 瀏覽:833
jar命令war包 瀏覽:121
福州交警app預約在哪裡簽字確認 瀏覽:623
android各版本sdk異同 瀏覽:726
怎樣在源碼中找精靈圖片 瀏覽:445
超聲波防盜51單片機 瀏覽:460
國內程序員編程能力 瀏覽:184