0

2 つの .c ファイル ac および bc に含まれるヘッダー ファイル ah があります。

ああ

#ifndef A_H_INCLUDE
#define A_H_INCLUDE
extern int g;
void chk(int f);
#endif

交流

# include <stdio.h>
# include "a.h"

void chk(int f)
{
    if(g==1) printf("\n CORRECT\n");
    else printf("\n INcorrect::%d: \n",f);
}   

紀元前

# include <stdio.h>
# include "a.h"

int main()
{
  int g;
  printf("\n ENTER::");
  scanf("%d",&g);
  chk(56);
  return 0;
}

コードをコンパイルすると、エラーが発生します

gcc a.c b.c a.h -o j
/tmp/ccEerIPj.o: In function `chk':
a.c:(.text+0x7): undefined reference to `g'
collect2: ld returned 1 exit status

私はすでにヘッダーファイルの変数宣言をチェックしており、同じことをしていると思います。

コードの問題への提案やポインタをいただければ幸いです。

どうもありがとう

4

1 に答える 1

3

int g;ファイルのグローバル スコープに追加しa.cて、変数の定義を提供します。

(ご参考までに、関数内のローカル変数はブロック スコープの自動変数であるため、リンケージがありません。問題とは関係ありません。)main()

于 2012-05-20T16:28:05.580 に答える