Cはメイクファイルとインクルード文を持っているので、あなたは特異なモンスターサイズのファイルを持たないので、コードを機能的に分解する必要があります。したがって、私が正しいとすれば、ヘッダーを作成して正しく作成すれば、.cファイル間で関数呼び出しを行うことができます。C:ヘッダーファイルと質問が含まれています。助けが必要!
私はそれをやろうとしていますが、残念ながらエラーが発生しています。
ファイル1)test.cの:
#include<stdio.h>
#include"suc.h"
main()
{
printf("Hello World\n\n");
printf("This is the number: %d \n\n", suc(6));
}
ファイル2)メイク:
ファイルは、次の内容を持っている
CC=gcc
CFLAGS=-c -Wall
test: suc.o
$(CC) -Wall -o test test.c
suc.o: suc.c
$(CC) $(CFLAGS) suc.c
ファイル3)suc.hを
#ifndef SUC_H_GUARD
#define SUC_H_GUARD
// returns the successor of i (i+1)
int suc(int i);
#endif
ファイル4)suc.c
#include "suc.h"
int suc(int i)
{
return i + 1;
}
私は私が手(-Bを作る)トップますしかし
gcc -c -Wall suc.c
gcc -Wall -o test test.c
test.c:7: warning: return type defaults to 'int'
/tmp/cc/7w7qCJ.o: In function 'main':
test.c: (.text+0x1d): undefined reference to 'suc'
collect2: ld returned 1 exit status
make: *** [test] Error 1
をこの単一のファイルプログラムがうまく動作 A): の両方が期待される結果を生みます!
#include<stdio.h>
main()
{
printf("Hello World\n\n");
printf("This is the number: %d \n\n", suc(6));
}
int suc(int i)
{
return i + 1;
}
B)、元のすべてのファイルが、test.cのに次の変更を伴う:
#include<stdio.h>
#include"suc.h" //suc() is still defined b/c suc.h is included
main()
{
printf("Hello World\n\n");
printf("This is the number: %d \n\n", 4); //HERE! -> no function call
}
ヘルプ、してくださいとあなたに感謝! エラーメッセージが何を伝えようとしているのかよくわかりません。テストを構築するとき、あなたがsuc.o
をリンクしていない
技術的には、 "C"にはメイクファイルはありませんが、実行されるオペレーティングシステムにはメイクファイルがあることがあります。 –