0

私は、引数を取らない多くの関数を含む他の誰かのコードの一部の関数を修正していました。彼らは次のように宣言されました

return_type_t func();

return_type_t func(void); の代わりに

次に、これらの多くが関数ポインターを持つ構造体の配列に入れられていることがわかりました。voidを取るように関数ポインタを修正したとき、関数の1つがvoid ptrではなくchar*を取ったため、別の警告が表示されました。

大規模な書き換えを行わずにこの種のことを行うための最良の解決策は何ですか (コードが複雑であるため、主にエッジの周りをクリーンアップしていて、フローの変更を避けたいと考えています)。

4

3 に答える 3

1

定義では、メンバーに正しい関数型をリストするstruct必要があります。型の安全性が必要な場合、それを回避する方法はありません。

于 2011-11-14T09:54:53.587 に答える
0

すべてのプロトタイプを書き直してchar*を取得し(void) parameter、パラメーターが役に立たない場所にキャストすることができます。

于 2011-11-14T10:08:13.127 に答える
0

C では、古いスタイルの宣言は が引数を取らないreturn_type_t func()という意味でfuncはなく、その引数の数と型 (存在する場合) が指定されていないことを意味します。void括弧内に追加できると仮定することはできません。

あなたのコードをもっと見ることなく、私のアドバイスは、各関数を個別に調査し、それぞれの正しい数とパラメーターの型を見つけて、それに応じてプロトタイプに記入することです.

于 2011-11-14T09:58:30.807 に答える