C++ 为什么键入def auto时会出错?

C++ 为什么键入def auto时会出错?,c++,c++11,C++,C++11,我想这会管用的 typedef auto var; 但我得到了一个错误: 错误:typedef声明为“自动” 相反,它与任何其他关键字一起工作: typedef int num; 为什么会出现错误?简单地说,这是不允许使用的auto类型定义定义类型的别名自动不是一种类型;当在变量声明中使用时,它是初始值设定项类型的替代项。如果您能够typedef auto-var,则var不会是类型的别名。简单地说,这是不允许使用auto类型定义定义类型的别名自动不是一种类型;当在变量声明中使用时,它是初始

我想这会管用的

typedef auto var;
但我得到了一个错误:

错误:typedef声明为“自动”

相反,它与任何其他关键字一起工作:

typedef int num;

为什么会出现错误?

简单地说,这是不允许使用的
auto
<代码>类型定义定义类型的别名<代码>自动不是一种类型;当在变量声明中使用时,它是初始值设定项类型的替代项。如果您能够
typedef auto-var
,则
var
不会是类型的别名。

简单地说,这是不允许使用
auto
<代码>类型定义定义类型的别名<代码>自动不是一种类型;当在变量声明中使用时,它是初始值设定项类型的替代项。如果您能够
typedef auto-var,则
var
不会是类型的别名。

自动是一个类型修饰符而不是类型,因此不能定义类型

自动是一个类型修饰符而不是类型,因此不能定义类型

您不能这样做,因为自动不是真正的类型。 如果要使用
var
而不是
auto
,则可以这样做:

#define var auto
但这样做可能会导致问题,因为在这之后,代码中的每一行
var
都将被
auto
替换。包括包含的文件。比如说

int var= 0;
将成为

int auto= 0;
这将破坏编译


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

你不能这样做,因为auto并不是一种真正的类型。 如果要使用
var
而不是
auto
,则可以这样做:

#define var auto
但这样做可能会导致问题,因为在这之后,代码中的每一行
var
都将被
auto
替换。包括包含的文件。比如说

int var= 0;
将成为

int auto= 0;
这将破坏编译


因此,如果你走这条路,记得在定义之前包含所有头文件。

你可以尝试
#define var auto
;如果你在使用,也使用<代码> >开始{{//>,<代码>定义结束} /Cube >等。不要尝试用C++编写另一种语言——编写习惯C++,这样你的维护者知道你做了什么。@ AndoLyG:你可能想更清楚地说明你能做到这一点,但却不认真。人们可能会认为你的解决方案是一个伟大的想法,否则…出于某种原因,该网站不允许我编辑我的评论;无论如何:我写的东西是可能的,但不推荐,因为它使代码更难理解。@Grizzly-had anatolyg刚才说“你可以试试
#define var auto
”,但没有说他的回答可能是错误的。他的“如果你是这样的话,…”清楚地表明他的回答是一个讽刺性的建议。你可以试试
#define var auto
;如果你在使用,也使用<代码> >开始{{//>,<代码>定义结束} /Cube >等。不要尝试用C++编写另一种语言——编写习惯C++,这样你的维护者知道你做了什么。@ AndoLyG:你可能想更清楚地说明你能做到这一点,但却不认真。人们可能会认为你的解决方案是一个伟大的想法,否则…出于某种原因,该网站不允许我编辑我的评论;无论如何:我写的东西是可能的,但不推荐,因为它使代码更难理解。@Grizzly-had anatolyg刚才说“你可以试试
#define var auto
”,但没有说他的回答可能是错误的。他的“如果你是这样的话,…”清楚地表明他的回答是一个讽刺的建议。这在C++11中不再是真的。这是完全正确的
auto
在C++11中不是类型。@DeadMG:但在C++11中不是类型修饰符。在C++11中不再是这样。这是完全正确的
auto
在C++11中不是类型。@DeadMG:但在C++11中不是类型修饰符。