C中结构的全局变量声明

时间:2014-02-24 07:17:07

标签: c global-variables structure

你能用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,
 }

2 个答案:

答案 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编译器上编译。

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