无法检查表中是否存在PostgreSQL

阿米尔·雷扎·里亚希

我正在编写一个连接到postgreql db的C程序,我正在尝试检查表:

PGresult  *re=PQexec(connection, "SELECT to_regclass('fp_stores_data')");

此变量是全局变量。但是当我编译代码时会发生此错误:

db.c:6:20: error: initializer element is not constant
6 | PGresult const *re=PQexec(connection, "SELECT to_regclass('fp_stores_data')");
史蒂夫·弗里德尔

如果这是一个全局变量,则C要求使用编译时已知的值对其进行初始化如果需要调用PQexec(),则这是运行时的事情,不允许这样做(正如编译器告诉您的那样)。

如果变量需要保持全局性,最好是将re变量初始化为NULL,并PQexec()在建立数据库连接后立即将实际的调用/赋值移动到运行时代码中。

一个非数据库的示例:您不能使用运行时调用来初始化任何静态变量,因此:

FILE *infile = fopen("myfile.txt", "r");  // NO

int main()
{
    infile = fopen("myfile.txt", "r");    // YES
    ...

这是确定的变量是静态的; 这只是在运行时必须进行分配

或者,如果变量是local,则可以使用运行时调用对其进行初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章