c - 头文件中的全局结构

标签 c header structure global declaration

我对 c 中的结构和头文件中的声明有疑问。 我正在编写一个代码,其中有 3 个变量,另外两个变量与之相关联。所以我决定声明一个结构。下面我正在写一个伪代码

//----------registers.h---------
#ifndef __REG__H__
#define __REG__H__

struct ADE_reg_type
{
    unsigned int i : 4;
    unsigned int j : 4;
};

extern struct ADE_reg_type AIRMS_reg;
extern struct ADE_reg_type BIRMS_reg;
extern struct ADE_reg_type CIRMS_reg;
#endif


//-----------registers.c-------------------
#include "registers.h"

struct ADE_reg_type AIRMS_reg = {.i = 4,.j = 5};  //initializing 
struct ADE_reg_type BIRMS_reg = {.i = 3,.j = 4};  //initializing 
struct ADE_reg_type CIRMS_reg = {.i = 1,.j = 9};  //initializing 

//-----------main.c-------------------
#include "registers.h"

int main()
{
   display_numbers(AIRMS_reg);  //display_numbers(struct ADE_reg_type) has 
                              //defined in another .c file which also includes
                              // registers.h
}

我想要的是我应该有一个我可以在任何 .c 文件中访问的变量。变量的范围应该是全局的。那么这是使用全局结构的正确方法还是我在这里犯了一些错误?

最佳答案

//----------registers.h---------
#ifndef __REG__H__
#define __REG__H__

struct ADE_reg_type
{
    unsigned int i : 4;
    unsigned int j : 4;
};


#endif


//-----------registers.c-------------------
#include "registers.h"

const struct ADE_reg_type AIRMS_reg = {.i = 4,.j = 5};  //initializing 
const struct ADE_reg_type BIRMS_reg = {.i = 3,.j = 4};  //initializing 
const struct ADE_reg_type CIRMS_reg = {.i = 1,.j = 9};  //initializing 

//-----------main.c-------------------
#include "registers.h"

extern const struct ADE_reg_type AIRMS_reg;

extern const struct ADE_reg_type BIRMS_reg;

extern const struct ADE_reg_type CIRMS_reg;

int main()
{
   display_numbers(AIRMS_reg);                               
}

//-----------------file_1.c--------------------
#include "registers.h"

extern const struct ADE_reg_type AIRMS_reg;

extern const struct ADE_reg_type BIRMS_reg;

extern const struct ADE_reg_type CIRMS_reg;

//-----------------file_2.c--------------------
#include "registers.h"

extern const struct ADE_reg_type AIRMS_reg;

extern const struct ADE_reg_type BIRMS_reg;

extern const struct ADE_reg_type CIRMS_reg;

就像这个你说的@Elad Hazan

关于c - 头文件中的全局结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47258101/

相关文章:

c - openMP 的性能改进

c - 需要解释使用 c 完成的数学计算

ios - MapKit 和自定义类

php - 什么可能导致标题已经发送,我将如何追踪它?

c++ - 如何在 C++ 中初始化结构

编码性 : MaxZeroProduct - complexity issues

c - 带有长信号处理程序的定时器问题 (SIGALARM)

c++ - 如何编写此方法的定义我收到错误

c - 错误 C2440 初始化无法将 void 转换为typ

c++ - 如何删除或清除结构数据类型的 vector