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一起使用。