mysql - 函数C mysql的隐式声明

标签 mysql c oop

typedef struct database
{
    char *host;
    char *user;
    char *pass;
    char *name;

    MYSQL *mysql;
    MYSQL_RES *result;
    MYSQL_ROW row;
}database_t;
extern database_t db;

........................

MYSQL* mysql_connection_setup(database_t db)
{   
    //MYSQL *connect = mysql_init(NULL);
    db.mysql = mysql_init(NULL);

    printf("HOST %s\n", db.host);
    if(!mysql_real_connect(db.mysql, db.host, db.user, db.pass, db.name, 0, 0, 0)) 
    {
        printf("Conection error : %s\n", mysql_error(db.mysql));
        exit(1);
    }
    return db.mysql;
}

MYSQL_RES* mysql_perform_query(MYSQL *connect, char *command)
{
    if(mysql_query(connect, command))
    {
        printf("MySQL query error : %s\n", mysql_error(connect));
        exit(1);
    }

    return mysql_use_result(connect);
}

......................................

如果我尝试在中使用 mysql 函数

int some_func()
{
  database_t *db = malloc(sizeof(database_t));
  db->mysql = mysql_connection_setup();
  return 0;
}

编译后会看到一些警告。

警告:函数“mysql_connection_setup”的隐式声明 [-Wimplicit-function-declaration] db->mysql = mysql_connection_setup(); 警告:赋值使指针来自整数而不进行强制转换 [-Wint-conversion] db->mysql = mysql_connection_setup();

我用它做什么?

最佳答案

警告说编译器在您第一次使用 mysql_connection_setup() 时没有看到任何声明。因此,编译器使用 int 返回类型隐式声明了一个与您的实际函数冲突的类型。 (请注意,自 C99 以来,“隐式 int”规则已从 C 标准中删除)。

因此,在源文件的顶部提供一个声明:

MYSQL* mysql_connection_setup(database_t db);

或者在头文件中将其声明为 extern,如果您使用 mysql_connection_setup() 在其他源文件中,则将该头文件包含在您的源文件中.

con_setup.h:

#ifndef CON_SETUP_H
#define CON_SETUP_H

extern MYSQL* mysql_connection_setup(database_t db);

#endif

并在您的 C 文件中包含 con_setup.h

关于mysql - 函数C mysql的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40463615/

相关文章:

php - SELECT something JOIN ON something IN 多个表的列

php - 查询后使用php从多行中检索信息

c - 不太确定,memcpy 上有段错误吗?

php - 依赖重载而不是依赖注入(inject)?

php - 如何使用 Construction() 参数自动设置 PHP 类属性?

php - 如何使用 unlink 功能在 joomla 更新和删除过程中删除文件?并使用取消链接获取要删除的已上传图像?

mysql - 识别与非识别关系(再次!!!)

c - 如何使用 X11 获取所有显示器的屏幕截图?

c - 使用属性 warn_unused_result 声明的警告 : ignoring return value of ‘realloc’ ,

javascript - 带有 Object.create 和命名构造函数的原型(prototype) OO