C中结构的全局变量声明



你能告诉我C语言中这段代码的含义吗?

这是全局变量的定义。

static const struct_name global_variable_name = // (Added equals to here)
{
function_call_1, // (comma instead of semicolon)
function_call_2, // ditto
NULL,
NULL,
}

If看起来像是在尝试初始化结构(但缺少equals,分号应该是逗号)。这些代码来自哪里?它是在自己的环境中编译的吗?

给定一个结构(我猜测它是什么类型的结构):

struct struct_name
{
void* func1;
void* func2;
void* something1;
void* something2;
};

还有一些函数指针:

void* func1 = NULL;
void* func2 = NULL;

然后你的代码用=初始化,参数用逗号:

static const  struct_name  global_variable_name = 
{
func1,
func2,
NULL,
NULL,
};

只是猜测,因为您提供的代码没有编译并且无效。看起来可能是一些#define欺骗,是struct_name还是global_variable_name#定义的?

更新

根据您的最新编辑和评论:

是的,你是对的,我修改了代码。这是全局变量的定义。

然后,代码正在初始化struct_name类型的全局变量global_variable_name,它是一个结构。正如您可以在如下声明整数时初始化它一样:

int myInteger = 1;

当你声明一个结构时,你可以初始化它

struct simple_struct
{
int val1;
int val2;
};
static const  simple_struct  global_simpleStruct = 
{
1,
2
};
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << "val1:" << global_simpleStruct.val1 << ", val2:" << global_simpleStruct.val2;
return 0;
}

输出为:val1:1, val2:2

请参阅此处的信息并搜索"struct initialization"。

希望这能让事情变得更清楚。

它没有任何意义,它是胡言乱语,不会在C编译器上编译。

很可能有人试图初始化结构,但失败了。

相关内容

  • 没有找到相关文章

最新更新