我经常看到这样的C++代码:
void foo()
{
struct sockaddr* from;
// ...
}
为什么需要 struct
说明符?它真的有作用吗?编译器已经可以知道 sockaddr
被声明为一个结构,所以我想知道为什么这是有用的或必要的。
我过去曾尝试删除它,但没有注意到行为上的差异,但我不确定删除它是否安全。
同样,这两者有什么区别?
sizeof(struct sockaddr)
sizeof(sockaddr)
最佳答案
作为一种编码“风格”,这很可能是 C 的继承,其中关键字是必需的。
在 C++ 中,大多数情况下不需要这样做,尽管有时会使用它来强制编译器将名称解析为类型的名称,而不是某些其他实体的名称(如变量,如下例所示) ):
struct x
{
};
int main()
{
int x = 42;
struct x* pX = nullptr; // Would give a compiler error without struct
}
就我个人而言,我不认为具有变量或与类型同名的函数是好的样式,而且我更愿意完全避免为此目的使用 struct
关键字,但是语言允许。
关于c++ - 为什么某些局部类型声明在 C++ 中以 'struct' 为前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244233/