ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

i042416發表於2018-04-05

ABAP

使用關鍵字重複引入一個include program,會報syntax error:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

原因是因為ABAP對include這個關鍵字的實現和其他程式語言有點不一樣,在啟用時簡單地把被include的program的全部原始碼替換原程式裡INCLUDE incl這一行,所以重複引入一個include program會報錯。

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

值得一提的是,ABAP report悄悄得include了很多標準的program,比如<sysini>.

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

因此如果再次重複引入,同樣的會遇到語法錯誤。

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

import in Java

Java的import和ABAP的include關鍵字實現的效果不一樣,在Java裡使用import引入包名可以讓程式猿少打些字,比如比較下圖第13行和第15行的寫法,明顯前者要簡潔一些。

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

因為import引入的是包名而不會像ABAP那樣將包的原始碼引入到使用了import的源程式,因此可以重複import。只是將Java編譯器生成的.class反編譯之後,會發現編譯器自動將冗餘的import移除,且自動引入了新的包java.io.printStream:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

include in C

譚浩強老師的《C程式設計》一書中提到,編譯器預處理時,要對#include命令進行"檔案包含處理":將被include的標頭檔案的全部內容複製到#include處。

那麼C語言的include類似ABAP的關鍵字include。

例子:a.c裡include標準的<stdio.h>:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

這個標頭檔案的位置: /usr/include

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

裡面是一些巨集定義和函式宣告:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

b.c裡沒有include這個標頭檔案:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

所以b.c編譯生成的執行檔案尺寸小於a.c:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

import in C4C ABSL

同Java的import,不會對後臺生成的ABAP程式碼有任何影響。

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較
ABAP的include關鍵字,Java的import, C的include和C4C ABSL 的import比較

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2152626/,如需轉載,請註明出處,否則將追究法律責任。

相關文章