error: expected primary-expression before ')' token (C)

error: expected primary-expression before ')' token (C)

我正在尝试调用一个名为 characterSelection(SDL_Surface *screen, struct SelectionneNonSelectionne sel) 的函数,其中 returns 一个 void

这是我尝试调用的函数的.h

struct SelectionneNonSelectionne;
void characterSelection(SDL_Surface *screen, struct SelectionneNonSelectionne);
void resetSelection(SDL_Surface *screen, struct SelectionneNonSelectionne);

在我的主要功能上,我尝试这样调用它:

characterSelection(screen, SelectionneNonSelectionne);

当我编译时,我得到消息:

 error: expected primary-expression before ')' token

我做了includes。我想我错误地调用了第二个参数,我的 struct。但是,我在网上找不到原因。

你知道我做错了什么吗?

需要对对象执行函数调用。您正在执行与此等效的操作:

// function declaration/definition
void foo(int) {}

// function call
foo(int); // wat!??

即传递需要对象的类型。这在 C 或 C++ 中没有意义。你需要做

int i = 42;
foo(i);

foo(42);

您传递的是类型作为参数,而不是对象。您需要执行 characterSelection(screen, test);,其中测试的类型为 SelectionneNonSelectionne

您应该创建一个 SelectionneNonSelectionne 类型的变量。

struct SelectionneNonSelectionne var;

之后将该变量传递给函数,如

characterSelection(screen, var);

错误是由于您传递的类型名称是 SelectionneNonSelectionne

我在 Code::Blocks 的最新夜间构建中发现了这个问题。当我在撰写本文时切换回 Code::Blocks 的稳定版本 20.03 时,问题消失了,我的代码编译和 运行 没有问题。我不确定 Code::Blocks 在做什么,但这很烦人。我在 C++ 项目中为我的代码中的每个 NULL 反复得到这个,迫使我改用 nullptr