0

短い CGI スクリプトで Splint を使用しようとしていますが、次のエラーが発生します。

Null storage passed as non-null param: mysql_init(NULL)

mysql_initパラメータが の場合は新しい値を返し、そうNULLでない場合は結果をパラメータに格納するように定義されています。それでも、やってみると

MYSQL* connection;
mysql_init(connection);

私は手に入れます:

Variable connection used before definition

これを解決するには?mysql.hもちろん、1 つの方法は、 Splint が文句を言わないように注釈を付けることです。私の唯一の解決策ですか?

4

1 に答える 1

1

そのパラメーターを編集mysql.hして として注釈を付けるか、その特定のコード行の/*@null@*/警告を無効にすることができます。

/*@-nullpass@*/
connection = mysql_init(NULL);
/*@=nullpass@*/

ところで、初期化されていない変数を関数に渡さないように注意してください。

MYSQL* connection; /* this pointer contains garbage at this point */
mysql_init(connection); /* this may get a segmentation fault */

代わりに、次のことを行う必要があります。

MYSQL* connection = NULL; /* initialize to NULL */
connection = mysql_init(connection); /* get a hold of the new object created */
于 2014-08-07T11:00:37.957 に答える