에서 정적 구조체 멤버의 주소를 취득 : 다른 헤더 파일
- 내가 유형을 만들 수있는 헤더 파일
myHeader.h
되세요을struct myStruct
회원은int number1
,int number2
및int number3
입니다. 이 파일에는struct
인스턴스에있는 각 구성원의 주소를 가져 오는 "getter"프로토 타입이 포함됩니다. I는
struct myStruct
의 정적 인스턴스를 선언하는 변환 부 (file.c
), 즉static struct myStruct myStructInstance
. 이 번역 단위는 "getter"함수를 정의합니다 (게시물 끝에 코드 예제를 사용하여 설명합니다).또 다른 헤더 파일
anotherHeader.h
- 이제는 이것이 나에게 문제가되는 까다로운 비트입니다 - 정적 구조의 멤버 각각의 주소를 얻어 무언가에 사용하십시오.
다음은 내가 말하는 것에 대한 예입니다.
myHeader.h
struct myStruct{
int number1;
int number2;
int number3;
};
int* get_number1(void);
int* get_number2(void);
int* get_number3(void);
file.c는
#include <myHeader.h>
static struct myStruct myStructInstance = {
.number1 = 0,
.number2 = 0,
.number3 = 0
};
int* get_number1(void){
struct myStruct* ptr_myStructInstance = &(myStructInstance);
int* number1Address = &(ptr_myStructInstance->number1);
return number1Address;
}
int* get_number2(void){
struct myStruct* ptr_myStructInstance = &(myStructInstance);
int* number2Address = &(ptr_pfcVariables->number2);
return number2Address;
}
int* get_number3(void){
struct myStruct* ptr_myStructInstance = &(myStructInstance);
int* number3Address = &(ptr_myStructInstance->number3);
return number3Address;
}
anotherHeader.h
#include <myHeader.h>
int* pNumber1 = get_number1();
int* pNumber2 = get_number2();
int* pNumber3 = get_number3();
문제는 그 회 위의 e 코드는 anotherHeader.h
에 "initializer 요소가 상수가 아닙니다."오류를 발생시킵니다. 정적 저장 기간을 사용하여 변수를 초기화 할 때 왜 상수가 아닌 표현식을 사용할 수 없는지에 대한 몇 가지 대답을 읽었지만 이것이 내 코드와 어떤 관련이 있는지 이해하지 못합니다.
'return & myStructInstance.number1'? –
'anotherHeader.h'에 관해서, 왜 헤더의 변수를 정의합니까? 즉, 헤더 파일을 여러 소스 파일에 포함 할 수 없습니다. –
@ JoachimPileborg 특별한 이유가 없습니다 - 사실, 그것이 내가 원래 가지고 있었던 것입니다. 어느 쪽이든 작동하지 않았으며 지금 당장 코드가 붙여져 있습니다. – agromov