2013-03-20 647 views
1

我定义在头文件几种结构 一些结构都thier恒定值的成员和其他一些结构具有 其成员常量值如何定义在C语言中的头文件常量变量

零件那些具有常数成员的结构,是否可以在头文件中定义一个常量变量 ?

像tcp_option.h

struct tcp_opt_nop 
{ 
    _uint_t kind; /* it has a constant value 0x01*/ 
} 

所以想要定义一个常数可变的报头文件中,像

struct tcp_opt_nop opt_nop={ 0x01}; 

然后这个变量可以由其他源文件使用

+0

你的意思了'define'指令? – squiguy 2013-03-20 17:16:41

+0

你是什么意思? – user1944267 2013-03-20 17:17:44

+0

你能给一个代码示例吗? – interjay 2013-03-20 17:19:02

回答

3

你应该extern你变量。

.h文件:

#ifndef HDR_H 
#define HDR_H 

typedef struct 
{ 
    int kind; /* it has a constant value 0x01*/ 
} tcp_opt_nop; 

extern const tcp_opt_nop opt_nop; 

#endif 

.c文件:

#include "hdr.h" 

const tcp_opt_nop opt_nop = {0x01}; 

主要文件:

#include "hdr.h" 

int main() 
{ 
    printf("%i\n", opt_nop.kind); 
    // ... 
} 
+0

啊,我知道了,你的意思是我需要创建一个'tcp_option.c'文件,只是想知道在编译时忘记了包含'tcp_option.c',会发生什么。如何让我不要忘记'tcp_option.c'文件? – user1944267 2013-03-20 17:59:44

+0

你不应该包含'.c'文件,你必须链接它。如果您使用IDE,则应将其添加到项目中。 – deepmax 2013-03-20 18:27:22

-2

是的,你可以定义。请参阅以下代码。

#include<stdio.h> 
typedef struct temp 
{ 
    int a; 
} temp; 
const temp test={5}; 
int main() 
{ 
    printf("%d",test.a); 
    return 0; 
} 
+0

他们在同一个文件中,我想要做的是定义一个独立的头文件 – user1944267 2013-03-20 17:43:28

+0

是的,即使这是可能的。只需将temp的结构和定义的声明复制到另一个文件temp.h中,并简单地将#include“temp.h”复制到源文件中,然后在那里使用这些文件... – 2013-03-20 17:46:24

+0

然后如果我包含此头文件文件在同一个项目中的许多源文件中,这个const变量会被多次定义?我认为应该增加一个'extern'? – user1944267 2013-03-20 17:49:24