繁体   English   中英

typedef-从原始类型到原始类型

[英]typedef - Primitive type to primitive type

将基本类型的typedef转换为另一个基本类型是否有效的C ++?

typedef int long;

在VS 2012上,会发出警告,但可以正常编译。

警告C4091:“ typedef”:在未声明任何变量的情况下,在“ long”的左侧被忽略

但是在gcc-4.3.4上,它失败了。

错误:声明未声明任何内容。

哪个编译器符合标准?

PS:我不会在生产代码中编写类似的内容。 只是想出了主意和检查。

它是有效的C ++吗

C ++ 11第7.1.3.6节:

在给定范围内,不得使用typedef规范重新定义在该范围内声明的任何类型的名称,以指代其他类型。

他们都在说同一件事,但是有人将其报告为错误。 请注意,VS警告显示“ typedef被忽略”。 问题是int longlong int是同义词,因此您基本上是在创建一个未命名的typedeflong

两者都符合标准要求。 该typedef无效,并且两个编译器都发出诊断信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM