[英]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 long
和long int
是同义词,因此您基本上是在创建一个未命名的typedef
到long
。
两者都符合标准要求。 该typedef无效,并且两个编译器都发出诊断信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.