我想要一个标准的参考,为什么下面的代码在C中触发了一个合规性警告(用gcc -pedantic"typedef redefinition" 测试过),但是在C++(g++ -pedantic)中很好:
typedef struct Foo Foo;
typedef struct Foo Foo;
int main() { return 0; }
Run Code Online (Sandbox Code Playgroud)
为什么我不能typedef在C中重复定义?
(这对C项目的头结构有实际意义.)
据说a type name使用后不能在类内部定义。例如:
typedef double Money;
class Account {
public:
Money balance() { return bal; } // uses Money from the outer
private:
typedef double Money; // error: cannot redefine Money
Money bal;
// ...
};
Run Code Online (Sandbox Code Playgroud)
该程序在GCC上不起作用,但在MSVC 14上却可以正常工作!*我从“ C ++入门手册第5版”中获得了此示例。