私が作っている小さなゲームのための簡単なヘルパーライブラリーを作った。このようなライブラリでは、ゲームフレームあたり何千回も呼び出されるため、できるだけ早く実行する必要があるいくつかのコア機能があります。ヘッダーのみのライブラリーを複数回含む場合の重複シンボル
私は「インライン」、それらを宣言し、その実施(library.c
)から自分の宣言(library.h
)を分割し、ゲームファイル(game.c
)でそれらを含めると、私は彼らがgame.c
で直接それらを宣言するため、最適化/インライン化していないと思いますgcc -O3
でゲームをコンパイルすると、その60倍以上のパフォーマンスが向上します。
この問題を解決するために、私は自分のライブラリをヘッダーのみのライブラリにすることにしました。 library.h
に私のフレームワークの定数、vars、関数があります。 game.c
にそれを含めても、私には最高のパフォーマンスが得られます。
さて、問題は、私は複数のファイル(たとえばgame1.c
とgame2.c
)でlibrary.h
を含めいつでもゲームをコンパイルするとき、私はduplicate symbol
エラーの長いリストを取得することです。ライブラリは#pragma once
ですが、それでも問題が発生します。
実際にヘッダー専用ライブラリを作成する方法、または外部ライブラリのインライン関数が実際に最適化されていることを確認する方法はありますか?すでにコメントアルクとして
おかげ
ヘッダーファイルに変数や関数を定義していますか? –
ヘッダ内の変数を宣言し、定義用に別々の '.c'ファイルを作成するだけです。 – qwn
関数' static'を宣言したいとします。 – alk