【发布时间】:2012-11-30 16:23:59
【问题描述】:
对于一个原始类型到另一个原始类型的 typedef 是否有效?
typedef int long;
在 VS 2012 上,发出警告但编译正常。
警告 C4091: 'typedef' : 当没有声明变量时,'long' 左侧被忽略
但是在 gcc-4.3.4 上,它失败了。
错误:声明没有声明任何东西。
哪个编译器符合标准?
PS:我不会在生产代码中写这样的东西。刚刚想到并检查。
【问题讨论】:
-
不确定,但这对我来说似乎是一个可怕的想法。第一个问题是您已经确定的问题。除此之外,任何加入您项目的新程序员都可能会在看代码时被愚弄。如果需要将代码移植到 int 意味着不同(例如更大)的系统,会发生什么?
-
@JonathanWood 我明白,但只是在这里检查语言规则。我不会写这样的东西。
标签: c++ visual-studio-2012 typedef language-lawyer gcc4