当我创建自己的结构时,说:
struct myStruct{
int data1;
int data2;
string data3;
}
我可以像这样初始化 myStruct 类型的实例:
myStruct instance1;
所以我的问题是,为什么我经常看到在结构初始化期间写入“struct”? 也许这是一个不准确的陈述,所以这是我的意思的一个例子:
/*This is a tiny program that checks
to see if a file exists in
the current working directory. */
#include <sys/stat.h>
#include <iostream>
using namespace std;
const string FILENAME = data.txt;
int main(){
struct stat fileStatus; //<-- HERE HERE HERE!
if (FileExists(FILENAME, fileStatus)){
cout << "File Does Exist" << endl;
}else{
cout << "File Does NOT Exist" << endl;
}
return 0;
}
bool FileExists(const string & fileName,struct stat & fileStatus){
bool fileDoesNotExist = stat (fileName.c_str(), &fileStatus);
return !fileDoesNotExist;
}
> 第 13 行:结构统计文件状态;
这是出于某种原因用 C 语言完成的事情吗?
带有宏或 typedef 的东西?
我只是不明白为什么会这样。
最佳答案
这是C的东西;没有充分的理由继续用 C++ 来做。1
在 C 中,struct
是类型名的一部分,例如:
struct foo { int x; };
定义了一个名为 struct foo
的类型。在 C++ 中,它定义了一个名为 foo
的类型。在 C 中,您通常可以将这种恼怒隐藏在 typedef 后面:
typedef struct foo { int x; } foo;
1 至少,不是在不可能也被编译为 C 的代码中(例如您问题中的示例)。
关于c++ - (C/C++) 结构初始化语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829368/