2017-06-09 19 views
-2

外部.cファイルで定義されている外部関数を呼び出すときに問題があります。Cで.hファイルを使用して外部の.cファイルから関数を呼び出す方法は?

私のメインファイル(main.c)は次のとおりです。

#include <stdio.h> 
#include "header.h" 

int main() { 

int a = 100; 
int b = 200; 
int ret; 

ret = maximo(a, b); 

printf("Max value is : %d\n", ret); 

return 0; 
} 

私は目的球maximo()を宣言するheader.hと呼ばれる.hファイルを使用します。

int maximo(int num1, int num2); 

、別の.cファイルで、私は目的球maximo()の定義を持っている:header.hファイルです。 maximo.cファイルは次のとおりです。

int maximo(int num1, int num2) { 

int result; 

if (num1 > num2) 
    result = num1; 
else 
    result = num2; 

return result; 
} 

私は上記のコードは、私のファイルの全体のコードです。 header.hファイルはその1行だけです。そして私は#includemaximo.cファイルに入れませんでした。

私は何かが欠けている場合は、あなたが見ることができるように、私はプログラミングの初心者ですので、私はクオンしません。私がいる

エラーは以下のとおりです。

undefined reference to 'maximo' 
error: 1d returned 1 exit status 

私はheader.hファイル内maximo.cコードを入れてみました、それが正常に動作しますが、それは私が必要なものではありません。

検索中に.cコードをまとめて.oファイルに変換してから、.hファイルを正しくリンクすることができますが、その方法はわかりません。

誰かが私を助けることができたら、私は非常に感謝します!

ありがとうございます!

+3

どのようにコードをコンパイルするには? – ArturFH

+2

どのように*あなたのプログラムをビルドしますか?もちろん 'maximo'関数を含むソースファイル、またはそのソースファイルから生成されたオブジェクトファイルでビルドする必要があります。 –

+1

すぐに問題が発生するとリンクエラーです。リンクコマンドラインで、プログラムと別のファイルの両方を指定する必要があります。 –

答えて

5

maximo.cファイルには#include "header.h"も必要です。あなたのヘッダーファイルにも警備員を含めることを忘れないでください:

#ifndef MAXIMO_H 
#define MAXIMO_H 

int maximo(int num1, int num2); 

#endif 

P.S. "header.h"を "maximo.h"に変更することをお勧めします。

あなたのコマンドラインは次のようになります。

gcc main.c maximo.c -o "filename"