Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Splint和MySQL:Null存储作为非Null参数传递_Mysql_C_Splint - Fatal编程技术网

Splint和MySQL:Null存储作为非Null参数传递

Splint和MySQL:Null存储作为非Null参数传递,mysql,c,splint,Mysql,C,Splint,我正在尝试将Splint与短CGI脚本一起使用,但出现以下错误: Null存储作为非Null参数传递:mysql\u init(Null) mysql_init的定义是:如果参数为NULL,则返回一个新值;如果参数不为NULL,则将结果存储在参数中。然而,如果我尝试 MYSQL* connection; mysql_init(connection); 我会得到: 定义之前使用的变量连接 如何解决这个问题?当然,一种方法是对mysql.h进行注释,这样Splint就不会抱怨了。这是我唯一的解决办

我正在尝试将Splint与短CGI脚本一起使用,但出现以下错误:

Null存储作为非Null参数传递:mysql\u init(Null)

mysql_init
的定义是:如果参数为
NULL
,则返回一个新值;如果参数不为NULL,则将结果存储在参数中。然而,如果我尝试

MYSQL* connection;
mysql_init(connection);
我会得到:

定义之前使用的变量连接


如何解决这个问题?当然,一种方法是对mysql.h进行注释,这样Splint就不会抱怨了。这是我唯一的解决办法吗

您可以编辑
mysql.h
将该参数注释为
/*@null@*/
,或者取消该特定代码行的警告:

顺便说一下,注意不要将未初始化的变量传递给函数:

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 */
MYSQL* connection = NULL; /* initialize to NULL */
connection = mysql_init(connection); /* get a hold of the new object created */