Cのプログラミングでは新しいですが、「未定義の参照」エラーを修正するのに何時間も努力しています。C-未定義の<関数名>への参照
私は戦艦ゲームをコードする必要があり、今は画面上にゲームマップを印刷しようとしています。私のコードprobeblyはあなたに感覚を覚えていませんが、始めにこのエラーを修正しようとしています。
私のコード
#include <stdio.h>
/*functions declaration*/
void mapmaker(char map[8][8]);
void printmap(char map[8][8]);
int main()
{
char map[8][8];
mapmaker(map);
printmap(map);
}
void mapmaker(char map[8][8])
{
int i,z;
/*creating map*/
for(i=0;i<8;i++){
for(z=0;z<8;z++)
{
map[i][z]='~';
}
}
void printmap(char map[8][8])
{
int num[8]={0,1,2,3,4,5,6,7};
int i,z;
for(i=0;i<8;i++)
printf("%d",num[i]);
printf("\n--------------------------------\n");
for(i=0;i<8;i++)
printf("%d|",num[i]);
for(z=0;z<8;z++)
printf("%c ",map[i][z]);
printf("\n");
}
}
それは関数を実行しようとしたときにエラーが発生 - >「printmap(マップ)」 は、取得「未定義の参照に 『printmap(マップ)』」エラーをイム。
ありがとう!
'mapmaker'では、あなたは閉じ括弧を忘れていました。それ以降は関数の本体の一部であり、コンパイラはあなたに叫んでいるはずです。 – Quentin
閉じ括弧が間違った場所にあります。 GCCを使用する場合、コードをコンパイルできますが、スコープのネストされた関数はコンテナ関数の外で呼び出されることはできません "ネストされた関数"と呼ばれる拡張機能があります。 – user3528438
デバッグを習得する必要があります。まず、コードを最小限の例に減らしてください。たとえば、mapmaker関数とその呼び出しを削除し、printmap本体のコードを削除します。次に、問題の原因となる小さな変更が見つかるまで元に戻します。 –