"複数の定義" エラーの回避策を必要とします.h:は、次のように私の問題を説明するためのおもちゃのコードがある
#include "stuff.h"
#include <stdio.h>
fcn.c:
#include "main.h"
void fcn() {
printf("Hello\n");
}
はmain.cの:
#include "main.h"
#include "fcn.h"
int main() {
fcn();
printf("HI\n");
}
コンパイルしようとする試みがで失敗します。
は/g/pe_19976/fcn_2.o:(.data+0x40): multiple definition of `testarr'
/g/pe_19976/main_1.o:(.data+0x40): first defined here
は、いくつかの読書を行った後、私は、ヘッダファイルに配列testarr
を定義することであることを認識します問題。しかし、実際のコードでは、いくつかのファイルがtestarr
にアクセスする必要があり、どこにでも同じ割り当て値を持つ必要があります。私はそれをmain.h
(?)に入れることができると思いますが、それが機能するとしても、実際のコードでは論理的にはstuff.h
に属しています。どのように私はこの謎を解決するのですか?
私が見つけたことに基づいて、testarr
をextern
と定義しようとしましたが、同じ問題がありました。