お世話になっております.
AdLintでおかしな現象に遭遇しました. 確かにmath.hをインクルードしているのですが,math.hによって宣言されるはずの関数が見つからないと警告が出ます.
W0109,この関数の宣言が見つかりません。省略されたものとみなし、`extern int sqrt()' を挿入します。
例えば下のようなコードで発生します.
#include <math.h> int main(void) { const double len2 = 1.0; double length = sqrt(len2); return 0; }
AdLint 2.2.0,Ubuntu 12.04(64bit)で確認しました. この環境に起因するものでしょうか.何かの定数が定義されていないなどの.
Anonymous
You seem to have CSS turned off. Please don't fill out this field.
ご報告ありがとうございます。
AdLint のプリプロセッサの不具合でした。
関数形式マクロに空の実引数を指定し、マクロ内部で対応する仮引数に ## 演算子が適用された場合に、プリプロセス結果が不正となっておりました。 この問題により、math.h 内で sqrt 関数のプロトタイプ宣言に余計なトークンが混じってしまい、ご報告いただいた現象が発生していました。
この不具合を AdLint 2.4.0 にて修正いたしました。
お手数おかけしますが、AdLint 2.4.0 にアップデートしていただき、再度ご確認をお願いいたします。
原因の調査とご対応ありがとうございます. AdLint 2.4.0 で問題が再現しないことを確認しました.
お世話になっております.
AdLintでおかしな現象に遭遇しました.
確かにmath.hをインクルードしているのですが,math.hによって宣言されるはずの関数が見つからないと警告が出ます.
W0109,この関数の宣言が見つかりません。省略されたものとみなし、`extern int sqrt()' を挿入します。
例えば下のようなコードで発生します.
AdLint 2.2.0,Ubuntu 12.04(64bit)で確認しました.
この環境に起因するものでしょうか.何かの定数が定義されていないなどの.
ご報告ありがとうございます。
AdLint のプリプロセッサの不具合でした。
関数形式マクロに空の実引数を指定し、マクロ内部で対応する仮引数に ## 演算子が適用された場合に、プリプロセス結果が不正となっておりました。
この問題により、math.h 内で sqrt 関数のプロトタイプ宣言に余計なトークンが混じってしまい、ご報告いただいた現象が発生していました。
この不具合を AdLint 2.4.0 にて修正いたしました。
お手数おかけしますが、AdLint 2.4.0 にアップデートしていただき、再度ご確認をお願いいたします。
原因の調査とご対応ありがとうございます.
AdLint 2.4.0 で問題が再現しないことを確認しました.