次のコードレイアウトがあります
header.h
#ifndef _header_h
#define _header_h
void empty(float *array, int l)
{
int i;
for (i=1 ; i<=l ; i++)
{
array[i]=0;
}
}
#endif
および 2 つのファイル (file1.c および file2.c と呼びましょう)
#include "header.h"
void function/*1 or 2*/(){
....
empty(a,b);
....
}
そのため、コンパイルは正常に機能しますが、関数定義が重複しているとコンパイラが言うため、リンカー コマンドは失敗します。ヘッダーファイルを引き続き使用してそれを回避するにはどうすればよいですか? ヘッダーで関数を定義するだけで、完全な関数を含む別の .c ファイルを作成すると、正常に動作します。ヘッダーで宣言するのが道だといつも思っていました。