当我输入自动键时,为什么会出现错误?

时间:2012-10-08 16:42:30

标签: c++ c++11

我认为这样可行。

typedef auto var;

但我收到错误:

  

error: typedef declared 'auto'

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

typedef int num;

为什么我收到错误?

3 个答案:

答案 0 :(得分:18)

简单来说,这不是auto的允许使用。 typedef定义了类型的别名。 auto不是一种类型;当在变量的声明中使用时,它是初始化器类型的替代。如果您能够typedef auto var;,那么var将不会是类型的别名。

答案 1 :(得分:0)

auto是类型修饰符,不是类型,因此不能是typedef'ed

答案 2 :(得分:0)

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

#define var auto

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

int var= 0;

将成为

int auto= 0;

这会破坏编译。

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