此警告"pointer to a function used in arithmetic"是什么意思?



我有这个代码:

#include <vector> 
class myClass
{
public:
static std::vector<int> race(int v1, int v2, int v3);
static int the_v1 = race[0];
static int the_v2 = race[1];
static int the_v3 = race[2]; 
}
int main() {}

我收到一个错误,上面写着:

警告:指向算术中使用的函数的指针

第6、7和8行。我很困惑为什么会收到这个错误,也很困惑为什么它将v1v2v3称为函数。

此声明:

static std::vector<int> race(int v1, int v2, int v3);

声明racestatic成员函数,该函数接受3个int参数并返回一个std::vector<int>

当您编写race[0]时,函数race会衰减为一个函数指针,然后您将对其进行索引。编译器警告您,这是没有意义的,这是真的。

请注意,您只收到警告,而不是错误。因为您可能是使用GCC编译代码的,GCC接受此代码作为扩展。就语言而言,这是不允许的,也是一个错误。

此外,编译器并没有将v1v2v3称为函数,而是仅将race称为函数。

最新更新