私はCにかなり慣れていないので、私の質問の1つは、重複エラーを回避する方法についてです。基本的に、プロジェクトにファイルがあり、それも含めている場合、Netbeans でプロジェクトをビルドすると、そのエラーが発生します。
関数を静的に定義することは、それを回避する正しい方法ですか? 他にどのような解決策がありますか? ありがとう
私はCにかなり慣れていないので、私の質問の1つは、重複エラーを回避する方法についてです。基本的に、プロジェクトにファイルがあり、それも含めている場合、Netbeans でプロジェクトをビルドすると、そのエラーが発生します。
関数を静的に定義することは、それを回避する正しい方法ですか? 他にどのような解決策がありますか? ありがとう
.c
/.cpp
ファイルは含めないでください。
宣言を共通ヘッダー ファイルに移動し、それをインクルードします。
K. Horvath が言うように、ある c ファイルを別の c ファイルに含めるべきではありません。これは、.c ごとに .h を提供し、.c ファイルをオブジェクト ファイルにコンパイルし、必要に応じて .h ファイルを含め、.c を含む .c と共にすべてのオブジェクトをコンパイルする必要があることを意味しますmain()
。ただし、.h 宣言で重複が発生する可能性はありますが、ここでインクルード ガードの出番です。
#ifndef MY_HEADER
#define MY_HEADER
// all your type definitions, function prototypes, etc
#endif
最初に各 .c をコンパイルする WRT。ここにgccの例を示します。 main.c で使用するさまざまな関数を含む util.c ファイルがあります。util.c には、対応する util.h が main.c にあるはずです#include
。それで:
gcc -Wall -g -c util.c
「-Wall」はコンパイラの警告を有効にします
"-g" デバッガー シンボルを含める
「-c」は、通常の実行可能ファイルの代わりに .o (リンクされていない中間オブジェクト) ファイルを生成します。
今:
gcc -Wall -g util.o main.c
これにより、main.c がコンパイルされ、util.o にコンパイルされた util.c の内容が含まれます。
あなたは netbeans を使っているので、これは理論的なものかもしれません -- 通常は IDE がそれをすべてやってくれます。ただし、基本的なプロセスを理解すると、IDE を理解しやすくなる場合があります ;)