你能用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,
}
答案 0 :(得分:4)
如果几乎看起来像尝试初始化结构(但缺少等号,分号应该是逗号)。这段代码来自何处并在其环境中编译?
给定一个结构(我猜它是什么类型的结构):
struct struct_name
{
void* func1;
void* func2;
void* something1;
void* something2;
};
还有一些函数指针:
void* func1 = NULL;
void* func2 = NULL;
然后你的代码用=初始化和args的逗号:
static const struct_name global_variable_name =
{
func1,
func2,
NULL,
NULL,
};
只是猜测,因为您提供的代码无法编译且无效。看起来它可能是一些#define技巧,是struct_name
还是global_variable_name
#defines?
<强>更新强>
根据您的最新修改和评论:
是的,你是对的,我修改了代码。这是全局变量定义。
然后,正在发生的是代码正在初始化类型为global_variable_name
的全局变量struct_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
查看信息 here 并搜索“struct initialization”。
希望这更清楚。
答案 1 :(得分:1)
它没有任何意义,它是乱码,不会在C编译器上编译。
很可能有人试图初始化结构但失败了。