C代码中有一行:
struct name_1 name2;
这行是什么意思?
我对上一行的理解是 name_1 是结构的名称,name2 是对象变量。然而 name_1 应该在某处定义,但我找不到 name_1 的定义。
所以我的问题是;有没有这样的东西,我们可以拥有一个未在任何地方定义的结构对象。
最佳答案
在文件范围内,这是名为 name2
的变量的定义,其类型为 struct name_1
。如果之前没有声明 struct name_1;
,那么这一行也声明了该类型。
作为一个没有初始化器和存储类说明符的文件范围变量定义,这是一个 tentative definition .暂定定义可能有不完整的类型,只要类型在文件末尾完成即可,例如:
#include <stdio.h>
struct foo bar;
void f();
int main()
{
printf("%p\n", (void *)&bar);
f();
// cannot do this
// printf("%d\n", bar.x);
}
struct foo { int x; };
void f()
{
bar.x = 5;
}
不过,这种代码并不常见。如果您在实际代码中看到 struct foo bar;
,则很可能 struct foo
之前已在您忽略的某个地方定义。
关于c - c中的 "struct <name_1> <name_2>"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50849627/