我正在尝试使用main()
函数中的以下代码连接到mysql数据库。
MYSQL *connect = mysql_init(NULL);
工作正常,我得到一个返回的指针值。
我创建了另一个带有函数的c ++文件,如下所示
int Newl_connection(FileHandler& pProcLog)
{
MYSQL *connect = mysql_init(NULL);
return 0;
}
编译和链接很好,我已经对main函数中的相同代码行进行了多次调用(作为测试),但是当我运行代码时它在Newl_connection()函数的行中失败了。 / p>
我已将Newl_connection剥离到尽可能基本,并将包含Main()的文件中的所有头文件包含到包含Newl_connection()函数的文件中。
我收到的编译错误是
编程接收信号SIGABRT,已中止。 __GI_raise中的0x00007ffff6bc6428(sig = sig @ entry = 6)at ../sysdeps/unix/sysv/linux/raise.c:54 54 ../sysdeps/unix/sysv/linux/raise.c:没有这样的文件或目录。
尝试使用类型名称作为表达式。
尝试将类型名称用作表达式
尝试将类型名称用作表达式。对于所有实例调用都会出现,但Newl_connection()
函数中的调用是终端。
我已尝试删除main()
中的所有其他实例,但仍然遇到同样的问题。
为什么代码应该在一个地方工作但在另一个地方表现不同? 我将非常感谢你在这个问题上的结束。
答案 0 :(得分:0)
根据你的功能标题:
int Newl_connection(FileHandler& pProcLog)
您应该使用FileHandler
类型的有效对象来调用它。
将变量名称设置为pProcLog
会让我觉得您想将它用作指向对象的指针。然后声明应该是:
int Newl_connection(FileHandler* pProcLog)
这样,您可以使用null
值作为参数调用函数safe。