5

Code::Blocks は初めてです。私の研究では、C でいくつかの小さなプログラムをプログラミングしています (試してみるためだけに)。それらは同じトピックに属しているため、それらをすべて1つのプロジェクトに入れようとしましたが、それぞれに主な機能があるため、うまくいきません。

これらのファイルをどうにかしてまとめる方法はありますか?

4

6 に答える 6

9

ソースファイルが呼び出されたとします

  • prog1.c
  • prog2.c
  • mylib.c
  • mylib.h

ここで、prog1.c と prog2.c にはそれぞれ main() 関数が含まれ、mylib.c (対応するヘッダー ファイル mylib.h を含む) には、各プログラムにリンクする必要があるいくつかのライブラリ関数が含まれています。Code::Blocks プロジェクトで、複数のターゲットを作成する必要があります。メニューから「File/New/Build target...」を選択し、「prog1」と「prog2」という名前を付けます。すべてのソース ファイルをプロジェクトに追加します (まだ行っていない場合)。

prog1.c を右クリックし、コンテキスト メニューから [プロパティ...] を選択します。ダイアログ ボックスで [ビルド] タブを選択し、[対象に属する] の下で [prog1] のみがチェックされていることを確認します。prog2.c とターゲット "prog2" で同じことを行います。「mylib.c」については、「prog1」と「prog2」の両方がチェックされていることを確認してください。

ビルドして実行するビルド ターゲットを UI で簡単に選択できるようになりました。「prog3」などの別のターゲットを追加する場合は、prog1.c と prog2.c のビルド プロパティに再度移動し、「prog3」のチェックを外す必要があることに注意してください。

于 2014-08-29T15:28:09.860 に答える
2

Cプログラムには main 関数を 1 つだけ含める必要があります。個別のプログラムをすべて関数として分割し、単一のCプログラムに配置するか、複数のファイルに配置してコンパイルすることもできます。

を使用してswitch case、さまざまな関数を呼び出すことができます。

main functionすべてのプログラムから を削除し、functions..

必要な場所に電話してください..これはあなたを助けます..

于 2013-01-18T10:10:06.750 に答える
1

素敵なユーティリティ関数を構築し始めているように思えます。したがって、raghu-srikanth-reddyce のアドバイスに従って、小さなプログラムごとに個別の関数を作成してください。ただし、簡単な C ライブラリを作成して、いつでもリンクできるようにすべてを保持する方がよいと付け加えておきます。ほとんどのプロのプログラマーは、そのようなライブラリを保持しています。

簡単なメイクファイルを使用すると、リンク先の最終的なバイナリを構築できます。

プログラミング頑張ってください ;)

于 2013-01-18T10:18:46.243 に答える
1

プロジェクトに 3 つの c ファイルが含まれており、各 c ファイルが個別のプログラムであり、独自のmain関数が含まれているとします。

  • program1.c
  • program2.c
  • program3.c

したがって、Makefile を作成できます (コンピューターでの名前は"Makfile"である必要があります)。必要なプログラムを個別にビルドします

メイクファイルは次のようになります。

all: program1 program2 program3

%.o: %.c
    $(CC) $(CFLAGS) -c -o $@ $^

program1: program1.o
    $(CC) $(LDFLAGS) -o $@ $^

program2: program2.o
    $(CC) $(LDFLAGS) -o $@ $^

program3: program3.o
    $(CC) $(LDFLAGS) -o $@ $^

clean:
    rm -f *.o program1 program2 program3

上記の Makefile を使用すると、各プログラムを個別にビルドできます

$ make program1

program1 のみをビルドします

または、すべてのプログラムを次のように構築できます

$make all
于 2013-01-18T10:34:18.773 に答える