0

外部構造体について混乱しています。構造体が定義されているファイル以外のファイルで構造体のグローバルインスタンスを定義する必要があります(正確にはわからない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;
}
4

2 に答える 2