1
7
请参阅前面对相关问题的回答。这是一篇来自丹萨克斯的文章的长引述,它像我遇到的任何事情一样清楚地解释了这个问题: Difference between 'struct' and 'typedef struct' in C++? 这项技术可以防止实际问题(尽管公认的是很少出现问题)。 这是一个廉价的保险-它在运行时或代码空间是零成本(唯一的成本是源文件中的几个字节),但您得到的保护是如此之小,以至于很少看到有人一直使用它。我有一个包含typedef的“new class”代码段,但是如果我真的从头开始编写一个类而不使用该代码段,我几乎不会费心(或者它还记得吗?)添加typedef。 所以我想说,我不同意这里给出的大多数观点——把这些类型化的东西放进去是值得的,但不足以让任何人(包括我自己)为不放进去而感到悲伤。 有人问我一个例子,说明没有类名typedef会导致意外的行为——下面是一个从SAKS文章中或多或少提出来的例子:
当函数声明可见时,由于函数之间没有名称冲突,程序的行为将静默地更改。
但是,如果您包括
|
2
20
它防止这样的代码编译:
这是完全合法的C++,尽管它是
可怕的
. 如果你这样做,那么任何对
然后编译器标记
|
3
6
亚当提供了正确的理由,但关于你的问题“值得麻烦吗”我会给出一个响亮的“不!”。可能的问题代码:
稍后有人说:
诚然,编译器会指出“错误”的一行,但这种情况很少发生(我认为我从未在真正的代码中看到过),以至于它无法证明一个近乎多余的typedef林是正确的。 |
4
0
似乎注释试图说明typedef使符号someclass成为全局符号,从而阻止任何人使用隐藏原始someclass的相同名称声明本地对象。 我尝试用VC6(不是一个真正的C++编译器,我知道,但最好的我有ATM),它似乎没有太多。某些类仍然被具有相同名称的本地声明隐藏。也许它会更改错误消息的内容,以使某些编译器更有用。 |
5
0
在我看来,你的同事可能还没有完全从C毕业。
如果你申报
这在C++中被改变了,原因应该相当明显。 |
6
0
要么是真正坏了的编译器,要么是不知道自己在做什么的人,或者我会这样想。 |
7
-2
不。 |
Jersey · 如何在自己的定义中缩写类名? 6 年前 |
Felix · 为什么我用typedef定义自然类型的尝试不起作用? 6 年前 |
cppBeginner · 将“typedef”设为最终(或模拟) 6 年前 |
coJetty · 使用或typedef减少模板参数 7 年前 |
VannTen · 使用指向非结构类型的不透明指针 7 年前 |
John Smith · C中带有数组的Typedef 7 年前 |
thndrwrks · 带有typedef ed函数指针的常量限定符 7 年前 |