構造体と変数 'editor'を定義したヘッダファイルがあり、複数のファイルで使用しています。私は他の場所に宣言していませんが、それは私に複数の宣言エラーを与えます。私も#ifndefを使ってみましたが、役に立たなかった。定義/宣言が1つのみのときにヘッダ宣言された変数のマルチファイル定義エラー
これは私のヘッダファイルです:
editorlib.h
#ifndef ED_LIB
#define ED_LIB
//#include files
struct terminalProperties {
int rows,cols;
struct termios origTerm;
int mode;
}editor;
int TERMINATE=0;
//function definitions
#endif
マイeditorlib.cpp
#ifndef EDITORLIBRARY_H
#define EDITORLIBRARY_H
#include "editorLibrary.h"
getAttr() {
tcgetattr(STDIN_FILENO, TCSAFLUSH, &editor.origterm);
}
//further code
#endif
ドライバファイルvi_editor.cpp:
#ifndef MAIN_H
#define MAIN_H
#include "editorLibrary.h"
int main(){
//some code
while(1){
//some code
if(TERMINATE)
break;
}
//some code
return 0;
}
#endif
マイノーマル.cpp:
#ifndef NORMALMODE_H
#define NORMALMODE_H
#include "editorLibrary.h"
void normalMode() {
editor.mode = 1;
//further code
}
#endif
マイcommand.cpp:
#ifndef COMMANDMODE_H
#define COMMANDMODE_H
#include "editorLibrary.h"
void commandMode() {
editor.mode = 2;
//further code
}
#endif
同様に、私は、エディタの変数を宣言したが、単に上記と同様の方法でそれを使用していない他のいくつかのファイルがあります。なぜ私は複数の宣言について教えているのか分かりません。ヘッダの
CまたはC++。一つを選ぶ。 – tilz0R
そうしないでください。 1つの定義ルールがあります。それを観察してください。 – EJP
ヘッダから変数定義を削除します。 'extern'宣言を使って、ソースファイルの一つに変数を定義してください。それでおしまい。 –