私はPreprocessor.hを持っています
#define MAX_FILES 15
struct Preprocessor {
FILE fileVector[MAX_FILES];
int currentFile;
};
typedef struct Preprocessor Prepro;
void Prepro_init(Prepro* p) {
(*p).currentFile = 0;
}
そのとき、宣言と定義を分離する必要があることに気付きました。だから私はPreprocessor.cを作成しました:
#define MAX_FILES 15
struct Preprocessor {
FILE fileVector[MAX_FILES];
int currentFile;
};
typedef struct Preprocessor Prepro;
そして、Preprocessor.hは次のようになります。
void Prepro_init(Prepro* p) {
(*p).currentFile = 0;
}
Pr..hがPreproタイプを知らないため、それは明らかに機能しません。私はすでにいくつかの組み合わせを試しましたが、どれもうまくいきませんでした。解決策が見つかりません。
typedef struct Preprocessor Prepro;
ヘッダーに、ファイルとcファイル内の定義、およびPrepro_init定義。これは問題なくあなたに代わって宣言します。
Preprocessor.h
#ifndef _PREPROCESSOR_H_
#define _PREPROCESSOR_H_
#define MAX_FILES 15
typedef struct Preprocessor Prepro;
void Prepro_init(Prepro* p);
#endif
Preprocessor.c
#include "Preprocessor.h"
#include <stdio.h>
struct Preprocessor {
FILE fileVector[MAX_FILES];
int currentFile;
};
void Prepro_init(Prepro* p) {
(*p).currentFile = 0;
}
Preprocessor
の定義を非表示にする場合は、ヘッダーファイルに次のように入力するだけです。
struct Preprocessor;
typedef struct Preprocessor Prepro;
ただし、より一般的には、他のコードで実際に使用できるように、ヘッダーファイルにPreprocessor
定義も必要になる可能性があります。
.c
を.h
に入力する必要があり、その逆も同様です。 Prepro_init
は.c
ファイルになければならず、そのファイルは#include "Preprocessor.h"
でなければなりません。