2

プログラミング言語の概念に関する Ravi Sethi の本を読んでいます。

int *i1;  
int *i2;

これらの宣言の後、i1 と i2 の型は名前の型に互換性がありません。名前型の互換性を使用する言語では、変数 i1 と i2 を比較したり、互いに割り当てたりすることができませんでした。

名前に互換性がないのはなぜですか?それらは同じ名前の type:int を持っています。誰かがこれを説明し、有効な純粋な名前の等価性の例を挙げてもらえますか? ありがとう

4

1 に答える 1

2

どちらも type を持っていませんint。どちらも へのポインタとして型付けされますint。Sethi の要点は、名前の等価性 (のみ) を使用する架空の言語では、これらの 2 つの型へのポインターint式は、互換性のない 2 つの異なる型を作成するということだと思いnewます。

名前等価言語では、型互換性を保って複数回使用するには、型式に名前を付ける必要があります。C++ 構文では、次を使用する必要がありますtypedef

typedef int *intp;
intp i1;
intp i2;

これで、i1名前i2に互換性のある型ができました。

于 2013-03-19T08:05:51.540 に答える