C言語 ファイルの分割
C言語改訂版1 はじめてのプログラミング (CD-ROM付) (プログラミング学習シリーズ)
- 作者: 倉薫
- 出版社/メーカー: 翔泳社
- 発売日: 2009/02/13
- メディア: 大型本
- 購入: 3人 クリック: 14回
- この商品を含むブログ (3件) を見る
関数を作ったら、プロトタイプの宣言を集めたヘッダファイルを作る
ことが鉄則とのこと。プロトタイプ宣言とは、
void decrease (int *p);
のように、関数の型だけをコンパイルに知らせるための記述のこと。
まず本編のファイルは次のように書いておく。
//test.c
#include "myfunction.h" //ヘッダファイルの指定 #include <stdio.h> main () { int num; num = 10; decrease(&num); printf("num=%d\n",num); }
次に関数の中身を書いたファイル。
//decrease.c void decrease(int *p) { (*p)-- ; }
忘れずにヘッダファイルを作っておく。
//myfunction.h void decrease(int *p); //ヘッダファイルにはプロトタイプ宣言のみ
これで同じフォルダにtest.c, decrease.c, myfunction.hが置いてある状態となる。コンパイル時には、次の様にヘッダファイルは除いて実行。
(ファイルが沢山あるときは、別の効率良い方法があるのだろう)
gcc test.c decrease.c -o test.exe #-o以降は実行ファイルの名前]
【追記】
自分のノートPCで実行すると、以下のようなエラーが出る。しかし、実行結果は正しい。研究室のUnix環境では何もエラーは出ない。
0 [main] gcc-4 6548 fhandler_disk_file::fixup_mmap_after_fork: requested 0xFFE90000 != 0x0 mem alloc base 0x0, state 0x10000, size 65536, Win32 error 487 347 [main] gcc-4 6548 C:\cygwin\bin\gcc-4.exe: *** fatal error in forked process - recreate_mmaps_after_fork_failed 1272 [main] gcc-4 6548 open_stackdumpfile: Dumping stack trace to gcc-4.exe.stackdump 1 [main] gcc 8880 fork: child -1 - forked process 6548 died unexpectedly, retry 0, exit code 256, errno 11 1094079 [main] gcc-4 6400 fhandler_disk_file::fixup_mmap_after_fork: requested 0xFFE90000 != 0x0 mem alloc base 0x0, state 0x10000, size 65536, Win32 error 487 1094588 [main] gcc-4 6400 C:\cygwin\bin\gcc-4.exe: *** fatal error in forked process - recreate_mmaps_after_fork_failed 1096025 [main] gcc-4 6400 open_stackdumpfile: Dumping stack trace to gcc-4.exe.stackdump 4096889 [main] gcc 8880 fork: child -1 - forked process 6400 died unexpectedly, retry 0, exit code 256, errno 11 5119640 [main] gcc-4 3896 fhandler_disk_file::fixup_mmap_after_fork: requested 0xFFE90000 != 0x0 mem alloc base 0x0, state 0x10000, size 65536, Win32 error 487 5120123 [main] gcc-4 3896 C:\cygwin\bin\gcc-4.exe: *** fatal error in forked process - recreate_mmaps_after_fork_failed 5121584 [main] gcc-4 3896 open_stackdumpfile: Dumping stack trace to gcc-4.exe.stackdump 8090259 [main] gcc 8880 fork: child -1 - forked process 3896 died unexpectedly, retry 0, exit code 256, errno 11
今はとりあえず放置して先に進む…