外部構造体について混乱しています。構造体が定義されているファイル以外のファイルで構造体のグローバルインスタンスを定義する必要があります(正確にはわからないRAM変数として)。
以下は、GCC がコンパイルでき、Code Composer Studio がコンパイル時エラーを出す間、正しく実行される例です。
どこに問題があるのか、GCC がどのようにコンパイルできるのか、どこでどのように extern 宣言を使用する必要があるのかを知りたいです。
コメントをいただければ幸いです。
person.h
#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
#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;
}