我正在查看我要使用的代码here:
#include <sys/stat.h>
struct stat sb;
if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode))
{
...it is a directory...
}
我想如果我要使用它,我应该理解它的作用。我的问题是关于这一行
struct stat sb;
这是什么意思?我知道struct
就像宣布它一样
struct node { int val; node * next; }
所以我很困惑为什么在struct声明之后有2个令牌。
答案 0 :(得分:2)
在C中,struct不会自动成为typename,因此您必须使用struct foo
引用struct name。同样,您需要使用enum bar
或union baz
。人们经常使用typedef
来避免在声明实例时键入struct
。
在C ++中,该关键字是可选的,因为结构,枚举和联合(加上类)是类型,但您仍然可以编写class std::string s = "abc";
。关于stat
,有一个结构和一个具有该名称的函数,为了消除两者之间的歧义,你需要在引用结构时写struct stat
。
答案 1 :(得分:0)
此
struct node { int val; node * next; }
是你可以称之为“struct stat”类型的定义 此
struct stat sb;
只需创建该类型的结构(已在其他地方定义) 例如在stat.h; - )