【问题标题】:error: expected primary-expression before ')' token (C)错误:“)”标记之前的预期主表达式(C)
【发布时间】:2015-03-31 11:47:24
【问题描述】:

我正在尝试调用一个名为 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.)
  • 我试图删除参数'SelectionneNonSelectionne',我显然有错误消息太少的参数,像这样:error: too few arguments to function "void characterSelection(SDL_Surface*, SelectionneNonSelectionne)" 如果我必须调用我不能调用的东西,我该怎么办?
  • 什么时候传递对象变成了移除参数?
  • 只是我自己的一个误会,我是初学者..

标签: c++ c function struct compiler-errors


【解决方案1】:

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

struct SelectionneNonSelectionne var;

然后将该变量传递给函数

characterSelection(screen, var);

错误是因为你传递了类型名称 SelectionneNonSelectionne

【讨论】:

    【解决方案2】:

    需要对对象执行函数调用。你正在做相当于这个:

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

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

    int i = 42;
    foo(i);
    

    foo(42);
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我会尝试将此应用到我的代码中,我对 C 非常不熟悉。谢谢
      • @Flo 这正是我在回答中告诉你的。
      猜你喜欢
      • 2012-07-08
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2013-01-13
      • 2017-09-24
      相关资源
      最近更新 更多