Tre*_*key 1 c c++ syntax struct initialization
当我创建自己的结构时,请说:
struct myStruct{
int data1;
int data2;
string data3;
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样初始化myStruct类型的实例:
myStruct instance1;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,为什么我经常在结构初始化期间看到"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;
}
Run Code Online (Sandbox Code Playgroud)
> LINE 13:struct stat fileStatus;
这是因某种原因在C中完成的吗?
有宏或typedef的东西?
我只是不明白为什么会这样.
这是一件C事; 没有充分的理由继续在C++中这样做.1
在C中,struct是typename的一部分,例如:
struct foo { int x; };
Run Code Online (Sandbox Code Playgroud)
定义一个名为的类型struct foo.在C++中,它定义了一个名为的类型foo.在C中,你通常可以在typedef后面隐藏这种烦恼:
typedef struct foo { int x; } foo;
Run Code Online (Sandbox Code Playgroud)