私は巨大な古いCプログラムの世話をしていて、それを C++ に変換しています (これは初めてです)。
プログラムが多くの異なるプラットフォーム上で多くの異なる構成で実行されなければならないという事実に関連して、非常に多くの複雑なプリプロセッサ ハックが行われています。
1 つのファイルで (それを と呼びますfile1.c
)、私はを呼び出し functionA()
ています。
そして、別のファイル ( と呼びますfile2.c
) には、 の定義がありfunctionA()
ます。
残念ながら、関数の正確な型は、途方もない数の方法で作成されたマクロのコレクションによって指定されます。
現在、リンカーは次のように不平を言っています。
functionA は未解決の外部シンボルです。
問題は、file1.c に見られるプロトタイプが、file2.c に見られる関数の実際の定義とわずかに異なることだと思います。
_cdecl
と の間、およびfastcall
あり と なし の間の不一致による微妙な違いの余地がたくさんあります__forceinline
。
コンパイラが とは対照的にで見られるの型であると考えているものを正確に示す方法はありますか?functionA()
file1.c
file2.c