错误:令牌 (C) 之前的预期主表达式')'

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

本文关键字:表达式 令牌 错误      更新时间:2023-10-16

我正在尝试调用一个名为 characterSelection(SDL_Surface *screen, struct SelectionneNonSelectionne sel) 的函数,该函数返回一个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.但是,我在网上找不到原因。

你知道我做错了什么吗?

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

struct SelectionneNonSelectionne var;

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

characterSelection(screen, var);
由于

您传递的类型名称 SelectionneNonSelectionne 导致此错误

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

// function declaration/definition
void foo(int) {}
// function call
foo(int); // wat!??

即在需要对象的地方传递类型。这在 C 或 C++ 中毫无意义。你需要做

int i = 42;
foo(i);

foo(42);

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

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