你能告诉我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编译器上编译。
很可能有人试图初始化结构,但失败了。