void f(struct A *p) {}
void g() { A *p; f(p); }
相当于:
struct A;
void f(A *p) {}
void g() { A *p; f(p); }
C++标准的哪个部分规定了这种行为?C语言又是怎样的情况呢?
我猜测在这个问题上 C 语言没有遵循 C++ 的做法。在 Visual Studio 编译器中,当使用 C 模式时,它不会编译这段代码:
void g(struct A { int a; } a);
struct A a; // 'a' uses undefined struct 'A'