외부 구조체에 대해 혼란 스럽습니다. 구조체가 정의 된 것 이외의 파일에 구조체의 전역 인스턴스를 정의해야합니다 (정확히 무엇인지 정확히 모르는 RAM 변수로).외부 구조체 및 다중 헤더
다음은 GCC가 컴파일 할 수있는 예제이며 Code Composer Studio에서 컴파일 타임 오류가 발생하는 동안 올바르게 실행됩니다.
문제가있는 곳, GCC 컴파일 방법 및 어디에서/extern 선언을 사용해야하는지 배우고 싶습니다.
모든 의견을 보내 주시면 감사하겠습니다.
#ifndef PERSON_H
#define PERSON_H
struct person {
int age;
};
typedef struct person PERSON;
void modifyPerson();
#endif // PERSON_H
personRam.h
#ifndef PERSONRAM_H
#define PERSONRAM_H
#include "person.h"
PERSON p1;
#endif // PERSONRAM_H
modifyPerson.c
,536 person.h#include "person.h"
#include "personRam.h"
void modifyPerson() {
p1.age = 10;
}
시스템을 대상으로 운영 체제를 당신이 컴파일에서하고있는 main.c에
#include <stdio.h>
#include "person.h"
#include "personRam.h"
int main() {
modifyPerson();
printf("%d", p1.age);
return 0;
}
외부 구조하기 위해, 당신은 적어도 한 번 키워드'extern'를 사용해야합니다. 너는하지 않았다. 그렇다면 외부 구조는 어디에 있습니까? 아무데도. 해당 구조의 복제 인스턴스가 있습니다. GCC는 당신의 실수를 너무 용서하고 있습니다. –
http://c-faq.com/decl/decldef.html – hmjd
@Vlad Lazarenko 중복 된 부분은 어디에 있습니까? 나는 그것을 personRam.h에서 한 번 선언했다. 내가 잘못? – groove