我正在编写一个连接到postgreql数据库的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')");
1条答案
按热度按时间a9wyjsp71#
如果这是一个全局变量,c要求用编译时已知的东西初始化它;如果需要打电话给
PQexec()
,这是运行时的事情,是不允许的(正如编译器告诉您的)。如果变量需要保持全局性,最好是初始化
re
变量为null,并移动实际PQexec()
在建立数据库连接之后,调用/分配到运行时代码中。非数据库示例:不能使用运行时调用初始化任何静态变量,因此:
变量可以是静态的;这只是必须在运行时进行的赋值。
或者,如果变量是本地变量,则可以通过运行时调用对其进行初始化。