C 为什么编译器会抱怨这个例子?
我在维基百科上读到了。该页上提到的示例是C 为什么编译器会抱怨这个例子?,c,C,我在维基百科上读到了。该页上提到的示例是 typedef int km_per_hour ; typedef int points ; km_per_hour current_speed ; points high_score ; ... void congratulate(points your_score) { if (your_score > high_score) ... 更进一步说,它说这是我无法理解的原因 void foo() { unsigned int a;
typedef int km_per_hour ;
typedef int points ;
km_per_hour current_speed ;
points high_score ;
...
void congratulate(points your_score) {
if (your_score > high_score)
...
更进一步说,它说这是我无法理解的原因
void foo() {
unsigned int a; // Okay
unsigned km_per_hour b; // Compiler complains
long int c; // Okay
long km_per_hour d; // Compiler complains
...
为什么编译器会抱怨unsigned和long?您不能用额外的说明符修改typedef。 你应该每小时只写公里数;和每小时公里数;
我希望这有帮助。您不能用额外的说明符修改typedef。 你应该每小时只写公里数;和每小时公里数;
我希望这会有所帮助。您不能在
typedef
'd类型之前预加signed
或unsigned
signed
和unsigned
只能修改基本整数类型并直接修改
编译器单独或在char
附近解析signed
或unsigned
,short
,int
和long
。在所有其他情况下,它们被视为无效/意外/错位
从这个意义上说,
signed
和unsigned
不作为const
或volatile
修饰符使用。您不能在typedef
类型之前添加signed
或unsigned
signed
和unsigned
只能修改基本整数类型并直接修改
编译器单独或在char
附近解析signed
或unsigned
,short
,int
和long
。在所有其他情况下,它们被视为无效/意外/错位
从这个意义上说,
有符号的
和无符号的
不能作为常量
或易失性的
修饰符使用。因为你已经定义了一种类型,也就是说,把剑放在地上,为自己辩护
然后你就不能改变你的情况了。这在法庭上和编译程序中都不起作用
很抱歉用这个比喻。因为你已经定义了一种类型,即把剑放在地上,然后做出你的理由 然后你就不能改变你的情况了。这在法庭上和编译程序中都不起作用
很抱歉这样比喻。
typedefs
不能像宏那样修改或使用。您有km\u/u hour
作为int
,因此只能这样使用
您应该更改typedefs
的定义,或者定义新的定义以消除编译器问题。typedefs
不能像宏那样修改或使用。您有km\u/u hour
作为int
,因此只能这样使用
您应该更改typedef的定义,或者定义新的定义,以消除编译器问题。请注意,typedef与宏不同。就像有符号和无符号不能与用户定义的类型(如结构)一起使用一样,它们也不能与typedef一起使用。请注意,typedef与宏不同。正如有符号和无符号不能与用户定义的类型(如结构)一起使用一样,它们也不能与typedef一起使用。