今天要写个东西,参照的一段C++代码里看到了诡异的东西,形式类似:
注意是C++哦。跟C不同,C++里用struct语法声明了类之后直接用类名就可以声明变量/参数了,而不必像C一样要写struct+结构体名,所以也就没有typedef的必要。
上面这种typedef虽然无害,但毕竟相当的不C++,稍微变化一下就会很诡异:
这就开始诡异了……
这里提到的那段代码肯定是C++的没错,用了std::map之类的,请读者不必多疑……
typedef struct A {
// ...
} A;
注意是C++哦。跟C不同,C++里用struct语法声明了类之后直接用类名就可以声明变量/参数了,而不必像C一样要写struct+结构体名,所以也就没有typedef的必要。
上面这种typedef虽然无害,但毕竟相当的不C++,稍微变化一下就会很诡异:
#include <iostream>
using namespace std;
typedef struct A {
int value;
} B;
int main() {
A a;
a.value = 42;
B& b = a;
cout << b.value << endl;
}
这就开始诡异了……
这里提到的那段代码肯定是C++的没错,用了std::map之类的,请读者不必多疑……