无法检查 postgresql 中是否存在 table

can not check whether a table exists or not in postgresql

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

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(),这是 runtime 的事情并且不允许(正如你的编译器告诉你的那样)。

如果变量需要保持全局,最好将 re 变量初始化为 NULL,并在数据库连接完成后将实际的 PQexec() call/assignment 移动到运行时代码中已成立。

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

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

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

变量可以是静态的;只有 分配 必须在运行时进行。

或者,如果变量是 local,它可以通过运行时调用来初始化。