![]() |
![]() |
|
|
言語の拡張
次に X/OPEN RPC 仕様で拡張された点を示します。多くの場合、言語は C 言語により密接に従うように拡張されており、ANSI C から IDL プロトタイプに変換することにより、既存インターフェイスの移植を簡素化しています。
|| && ? | & _ == != = << >> <= >= < > + - % ! ~
つまり、これらのトークンの 1 つが先行するまたは後続する場合は、識別子または数字の前または後に空白を入れる必要はないということですIDL 仕様ではa=b+3 は認められず、 a = b + 3 のように空白を入れる必要があります。これは OSF DCE IDL コンパイラの動作によるものと思われます。
long *op(void);
また、構造体または共用体を返すことも認めていません。すべてを定義済みの型に隠ぺいできるという点で正しいと考えられますが、DCE IDL コンパイラと、もちろん C コンパイラはより豊富なオペレーションを返すことを認めています。サポートされている文法は以下のようになります。
[operation_attributes] <type_spec> <declarator>
この場合の <declarator> は、<function_declarator> を含む必要があります。<function_declarator> が存在しない場合、変数は宣言されますが、結果としてエラーになります。オペレーションの配列または配列を返すオペレーションを宣言することは共にこの文法で認められていて、宣言としては認識されますが、エラーが通知されます。
移植性に制限を加える可能性がある拡張
X/OPEN RPC 仕様に対して BEA Tuxedo ATMI の 4 つの拡張機能が追加されており、これらは仕様をより C 言語に近づける一方で、OSF DCE IDL コンパイラではサポートされないために IDL ファイルの移植性に制限を加えることになります。
const char *str = "abc" "def";
は、次と同じように扱われます。
const char *str = "abcdef";
const char *str = "abc¥
def";
は、次と同じように扱われます。
const char *str = "abcdef";
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|