1

我以为这会奏效。

typedef auto var;

但我得到了错误:

error: typedef declared 'auto'

相反,它适用于任何其他关键字:

typedef int num;

为什么我会收到错误消息?

4

3 回答 3

19

简单地说,这不是允许使用auto. typedef定义类型的别名。 auto不是类型;在变量声明中使用时,它是初始化程序类型的替代。如果你能够typedef auto var;,那么var就不会是一个类型的别名。

于 2012-10-08T16:46:09.757 回答
0

auto 是类型修饰符而不是类型,因此不能进行类型定义

于 2012-10-08T16:47:21.787 回答
0

你不能这样做,因为 auto 不是真正的类型。如果你想使用var而不是autothen 你可以这样做:

#define var auto

但是这样做会导致问题,因为在那之后var代码中的每一行都会被替换为auto. 包括包含的文件。例如

int var= 0;

会变成

int auto= 0;

这将破坏编译。

因此,如果您要走这条路,请记住在定义之前包含所有头文件。

于 2021-01-30T08:37:55.897 回答