【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22145

コンパイルエラー
投稿者---ようこ(2005/07/26 21:31:28)


warning: `Mari_Init_Param' declared `static' but never defined

このワーニングエラーは、何が悪いのでしょうか?
Mari_Init_Param は、static関数として定義しています。
よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:コンパイルエラー 22146 まきじ 2005/07/26 21:48:57


No.22146

Re:コンパイルエラー
投稿者---まきじ(2005/07/26 21:48:57)


>warning: `Mari_Init_Param' declared `static' but never defined

「Mari_Init_Param が static で宣言されてるが、定義されていない。」
という意味だと思います。


この投稿にコメントする

削除パスワード

No.22148

Re:コンパイルエラー
投稿者---ようこ(2005/07/26 22:11:47)


>>warning: `Mari_Init_Param' declared `static' but never defined
>
>「Mari_Init_Param が static で宣言されてるが、定義されていない。」
>という意味だと思います。

.hで以下の宣言をして
static BB_RetCode_t Mari_Init_Param(char *);
そのファイルをインクルードした.cで、
関数定義をしているのですが・・・何が悪いのでしょうか?
エラーは.hで出ています


この投稿にコメントする

削除パスワード

No.22152

Re:コンパイルエラー
投稿者---まきじ(2005/07/26 22:33:42)


>.hで以下の宣言をして
>static BB_RetCode_t Mari_Init_Param(char *);
>そのファイルをインクルードした.cで、
>関数定義をしているのですが・・・

その関数を定義してるファイル以外で使おうとしているのでしょう。


この投稿にコメントする

削除パスワード

No.22154

Re:コンパイルエラー
投稿者---ようこ(2005/07/26 22:57:53)


>>.hで以下の宣言をして
>>static BB_RetCode_t Mari_Init_Param(char *);
>>そのファイルをインクルードした.cで、
>>関数定義をしているのですが・・・
>
>その関数を定義してるファイル以外で使おうとしているのでしょう。

いいえ、この関数は別ファイルからは使いません。
.hのエラーなので、これをインクルードしている.cファイルがこの関数を
宣言していないとエラーになっているのでしょうか?
複数の.cファイル内の関数のプロトタイプ宣言を1つの.hに記述してそれを各.cがインクルードしています。
何か良い方法はないでしょうか?
プロトタイプ宣言を別々の.hに記述するしかないのでしょうか?



この投稿にコメントする

削除パスワード

No.22157

Re:コンパイルエラー
投稿者---まきじ(2005/07/26 23:09:53)


>複数の.cファイル内の関数のプロトタイプ宣言を1つの.hに記述してそれを各.cがインクルードしています。

全ての .c ファイルで関数の定義はしていますか?

全ての .c ファイルで同じ処理の関数を利用するなら、
.h だけに定義し、使いたい .c ファイルに include
すれば良いと思います。


この投稿にコメントする

削除パスワード

No.22177

Re:コンパイルエラー
投稿者---REE(2005/07/27 10:34:53)


>.hのエラーなので、これをインクルードしている.cファイルがこの関数を
>宣言していないとエラーになっているのでしょうか?

おそらくこれが当たりです。

>複数の.cファイル内の関数のプロトタイプ宣言を1つの.hに記述してそれを各.cがインクルードしています。
>何か良い方法はないでしょうか?

static関数は、他の.cファイルから見る必要が無いので、
使用する.cファイルに直接プロトタイプ宣言を書けばよいです。
.hファイルには、他の.cファイルから見る必要のあるものだけを書きましょう。
これは、.hと.cが1対1に対応している場合でも同じです。



この投稿にコメントする

削除パスワード

No.22178

Re:コンパイルエラー
投稿者---まきじ(2005/07/27 10:47:22)


// func.h
static void func(void);

// hoge.c
#include<stdio.h>
#include"func.h"

int main(void){

    func();
    func2();
    
    return 0;
}

static void func(void){

    puts("hello");
    
}

// foo.c
#include"func.h"

void func2(void){

    func();
}

な感じになってるのではないでしょうか?
foo.c では、func() は宣言はされているが定義はされていない。


この投稿にコメントする

削除パスワード

No.22179

Re:コンパイルエラー
投稿者---まきじ(2005/07/27 10:54:33)


hoge.c に extern void func2(void); が抜けてました。

# ようこさんへのレスです。間違えました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧