私はゲームを書いていますが、今は私が組織のために複数のファイルを分割しようとしています。私は問題にぶつかってきましたが、私はどのように修正するかについてはあまりよく分かりません。最初は、次のようにmainにマップを定義しました:文字列配列の定義をメインファイルから別のファイルに移動する
char const *map[]={
" ------------- ",
"|......|......|",
"|.............|",
"|......---.---|",
"|---.---...|..|",
"|..........|..|",
"|..........|..|",
"|.............|",
"|..........|..|",
" ------------- ",
};
これは問題なく機能していました。
#include "map.h"
*map = {
" ------------- ",
"|......|......|",
"|.............|",
"|......---.---|",
"|---.---...|..|",
"|..........|..|",
"|..........|..|",
"|.............|",
"|..........|..|",
" ------------- ",
};
これは私にエラーを与える:「map.c」と呼ばれる
extern const char *map[];
、ファイル内の実際の定義:今、私は「map.h」と呼ばれるファイルに宣言を移動しています:
「をマップするための競合型」ならびに多数の警告:「互換性のないポインタ型からの初期化[-Wincompatibleポインタ・タイプ」-------------「」
と: "スカラーの余分な要素それ以降の各行に対して「イニシャライザ」を設定します。
map.cの "map"のfronで逆参照演算子を削除した場合、 "initializer要素は読み込み時に計算不可能"になります。 私はmap.hで配列を定義するだけでこの問題を回避できると考えましたが、もちろんmap.hをインクルードするファイルごとに複数の定義にエラーが発生します。
これを実装する/私が間違っていることは何ですか?
おかげで、ニック
宣言と定義ftwは 'map.c'の中で' * map'の宣言を修正していますが、間違っています。 – t0mm13b
im map.cを使用するconst char * map = { –
@ t0mm13b他の人が示唆しているように、定義を意味しましたか?あるいは宣言に誤りがありますか? – Nic