我见过许多程序,包括如下所示的结构
typedef struct
{
int i;
char k;
} elem;
elem user;
Run Code Online (Sandbox Code Playgroud)
为什么经常这么需要?任何具体原因或适用范围?
我想要一个标准的参考,为什么下面的代码在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项目的头结构有实际意义.)
我已经看到了"不透明类型"的概念,但我真的没有找到一个简洁的答案,关于什么定义了C中的opaque类型,更重要的是它们允许我们用它们的存在解决的问题.谢谢