1

私が何かをするとき

typedef long a;
extern a int c;

それは私にエラーを与えます: two or more data types in declaration specifiers.Why?

編集

typedef long a;
extern a c;

正常に動作します。なぜ上ではないのですか?

4

4 に答える 4

12

マクロではなくtypedefです。コンパイラは、2 つの異なる型 (と) を含む をextern long int c認識します。extern a int caint

于 2013-09-15T08:42:24.033 に答える
8

何かをtypedefするとそれが独自の、まったく新しいタイプになるからです。現在、修飾子として使用できません。

于 2013-09-15T08:42:33.133 に答える
0

a はすでに long int です。a と呼ばれる long int 型があると言っています。

暗黙の int の長さについては、http://tigcc.ticalc.org/doc/keywords.html#shortを参照してください。

于 2013-09-15T08:59:46.010 に答える
-2

Lsiebert は正しい答えを出します。宣言で基底型を省略した場合は int とみなされます。つまり、long = long int です。「extern a int c」を宣言すると、コンパイラはそれを「extern long int int c」に変換します。エラーが発生します。

于 2013-12-19T06:55:20.477 に答える