[解決済み】警告/エラー "関数宣言がプロトタイプでない" について
2022-02-21 23:02:06
質問
作成したライブラリがあります。
ファイル mylib.c:
#include <mylib.h>
int
testlib() {
printf("Hello, World!\n");
return (0);
}
ファイル mylib.h:
#include <stdio.h>
extern int testlib();
私のプログラムでは、このライブラリ関数を呼び出そうとしました。
ファイル マイプログラム.c :
#include <mylib.h>
int
main (int argc, char *argv[]) {
testlib();
return (0);
}
このプログラムをコンパイルしようとすると、次のようなエラーが発生します。
myprogram.c:1 からインクルードされたファイルでは mylib.h:2 warning: function declaration isn't a prototype (関数宣言がプロトタイプでない)
使っています。
gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2)
関数のプロトタイプを宣言する適切な方法は何ですか?
どのように解決するのですか?
Cの場合
int foo()
と
int foo(void)
は別の関数です。
int foo()
は任意の数の引数を受け付けますが
int foo(void)
は引数0を受け付けます。C++では、これらは同じことを意味します。私は
void
引数なしを意味する場合は、一貫して
もし、変数
a
,
extern int a;
は、コンパイラに
a
は、別の翻訳ユニット(Cコンパイラがソースファイルのために言う)に存在する可能性のあるシンボルなので、リンク時まで解決しないでください。一方、関数名であるシンボルは、いずれにせよリンク時に解決される。関数上のストレージクラス指定子の意味(
extern
,
static
) は、その可視性にのみ影響し
extern
はデフォルトなので
extern
は実は不要なのです。
を削除することを提案します。
extern
これは余計なもので、通常は省略されます。
関連
-
[解決済み】fatal error: Python.h: そのようなファイルやディレクトリはありません
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み] テスト
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】strcmpが機能しない
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】Errno: 11, Resource Temporarily Unavailable(リソースが一時的に利用できない