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 파일에 액세스 할 수있는 변수를 가지고 있어야한다는 것입니다. 변수의 범위는 전역 적이어야합니다. 글로벌 구조를 사용하는 올바른 방법인가요? 아니면 여기서 실수를 저지르고 있습니까?
전역 변수 *를 사용하는 것은 좋지 않은 생각인데, 실제로 이것이 전역을 필요로하는 상황이라면 실제로 어떻게해야할까요? 여기서 유일하게 이상한 것은'display_numbers()'를 호출하는 것입니다.이 함수가 전역 변수의 값을 보여줄 경우 매개 변수가 필요 없습니다. 매개 변수로 * struct 태그 * 아마도 아마 잘못되었습니다. –
아, 두 개의 밑줄 ('__')을 사용하여 포함 경비를 시작하지 마십시오. 이것은 구현에 예약되어 있습니다. 'REG_H' 또는 아마도'REG_H_'를 사용하십시오. –
@FelixPalmen 표시된 코드가 (그렇지 않으면 적용 가능한) 주석 이후 변경되었습니다. 그렇지 않습니까? 적어도 매개 변수로 구조 태그를 볼 수 없습니다 (더 이상). – Yunnosch