天天看點

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

ABAP

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

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

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

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

值得一提的是,ABAP report悄悄得include了很多标準的program,比如.

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

是以如果再次重複引入,同樣的會遇到文法錯誤。

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

import in Java

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

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

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

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

include in C

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

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

例子:a.c裡include标準的:

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

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

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

裡面是一些宏定義和函數聲明:

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

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

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

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

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

import in C4C ABSL

同Java的import,不會對背景生成的ABAP代碼有任何影響。

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