Ada 程式設計/關鍵字/aliased
外觀
如果你來自 C/C++,你可能習慣了這樣一個事實,即 陣列、結構體/記錄 和其他變數的每個元素都具有一個地址。 C/C++ 標準實際上要求這樣做。在 Ada 中,情況並非如此。
Ada 是一種自最佳化語言——例如,它沒有像 C/C++ 中那樣的 register 關鍵字。Ada 編譯器將自動使用暫存器進行儲存。順便說一句,大多數現代 C/C++ 編譯器現在只是忽略了 register 並自行分配暫存器,就像 Ada 一樣。
因此,如果您想從任何變數獲取 訪問,您需要告訴編譯器該變數需要在記憶體中,並且可能不會駐留在暫存器中。這就是 關鍵字 aliased 的作用。此外,它還可以作為程式閱讀者關於存在引用該變數的指標的提示。
I : aliased Integer := 0;
宣告一個array 作為aliased 將僅確保該陣列作為一個整體具有地址。它沒有說明該array 的各個元素——這些元素可能以一種多個元素具有相同地址的方式打包。您需要將實際元素也宣告為 aliased。您可以在 Types/array 中瞭解如何做到這一點。這裡只是一個簡短的示例
typeDay_Of_Monthisrange1 .. 31;typeDay_Has_Appointmentisarray(Day_Of_Month)ofaliasedBoolean;
與陣列一樣,將記錄宣告為 aliased 僅能確保該記錄作為一個整體具有地址。它沒有說明該記錄的各個元素——這些元素同樣可能被打包並共享地址。您同樣需要將實際元素也宣告為 aliased。您可以在 Types/record 中瞭解如何做到這一點。這裡只是一個簡短的示例
typeBasic_RecordisrecordA :aliasedInteger;endrecord;
| Ada 關鍵字 | ||||
|---|---|---|---|---|
abort
|
else
|
new
|
return
|
|
abs
|
elsif
|
not
|
reverse
|
|
abstract (Ada 95) |
end
|
null
|
||
accept
|
entry
|
select
|
||
access
|
exception
|
of
|
separate
|
|
aliased (Ada 95) |
exit
|
or
|
some (Ada 2012) |
|
all
|
others
|
subtype
|
||
and
|
for
|
out
|
synchronized (Ada 2005) |
|
array
|
function
|
overriding (Ada 2005) |
||
at
|
tagged (Ada 95) |
|||
generic
|
package
|
task
|
||
begin
|
goto
|
parallel (Ada 2022) |
terminate
|
|
body
|
pragma
|
then
|
||
if
|
private
|
type
|
||
case
|
in
|
procedure
|
||
constant
|
interface (Ada 2005) |
protected (Ada 95) |
until (Ada 95) |
|
is
|
use
|
|||
declare
|
raise
|
|||
delay
|
limited
|
range
|
when
|
|
delta
|
loop
|
record
|
while
|
|
digits
|
rem
|
with
|
||
do
|
mod
|
renames
|
||
requeue (Ada 95) |
xor
|
|||
