私が何かをするとき
typedef long a;
extern a int c;
それは私にエラーを与えます: two or more data types in declaration specifiers
.Why?
編集
typedef long a;
extern a c;
正常に動作します。なぜ上ではないのですか?
私が何かをするとき
typedef long a;
extern a int c;
それは私にエラーを与えます: two or more data types in declaration specifiers
.Why?
編集
typedef long a;
extern a c;
正常に動作します。なぜ上ではないのですか?
マクロではなくtypedefです。コンパイラは、2 つの異なる型 (と) を含む をextern long int c
認識します。extern a int c
a
int
何かをtypedef
するとそれが独自の、まったく新しいタイプになるからです。現在、修飾子として使用できません。
a はすでに long int です。a と呼ばれる long int 型があると言っています。
暗黙の int の長さについては、http://tigcc.ticalc.org/doc/keywords.html#shortを参照してください。
Lsiebert は正しい答えを出します。宣言で基底型を省略した場合は int とみなされます。つまり、long = long int です。「extern a int c」を宣言すると、コンパイラはそれを「extern long int int c」に変換します。エラーが発生します。