如何在C语言中定义头文件中的常量变量

use*_*267 1 c

我在头文件中定义了几个结构,一些结构具有常量值的所有其他成员,而其他一些结构的成员部分具有常量值

对于具有常量成员的结构,是否可以在头文件中定义常量变量?

就像在头文件tcp_option.h中一样

struct tcp_opt_nop
{
    _uint_t kind;  /* it has a constant value 0x01*/
}
Run Code Online (Sandbox Code Playgroud)

所以我想定义一个常量变量,比如

struct tcp_opt_nop opt_nop={ 0x01};
Run Code Online (Sandbox Code Playgroud)

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

mas*_*oud 5

你应该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
Run Code Online (Sandbox Code Playgroud)

.c 文件:

#include "hdr.h"

const tcp_opt_nop opt_nop = {0x01};
Run Code Online (Sandbox Code Playgroud)

主文件:

#include "hdr.h"

int main()
{
    printf("%i\n", opt_nop.kind);
    // ...
}
Run Code Online (Sandbox Code Playgroud)