C : error: expected expression before âSRT_ControleComplet_Sâ

标签 c function

我正在尝试开发一个C应用程序,使用一些我无法修改的库和函数(它们是由其他人提供的)。

这是我出现问题的代码块:

unsigned short errSV;
unsigned short sgdSessFSE;

errSV = SRT_ControleComplet_S(sgdSessFSE);

以下是 SRT_ControleComplet_S 在头文件中的声明方式:

typedef unsigned short (API_ENTRY FARPTR SRT_ControleComplet_S)    (unsigned short NumeroSession);

其中 API_ENTRY 和 FARPTR 定义为

#ifndef API_ENTRY
  #define API_ENTRY
#endif

#ifndef FARPTR
  #define FARPTR *
#endif

编译时出现以下错误:

错误:SRT_ControleComplet_S 之前的预期表达式

我已经遇到过这个问题,因为 ]、} 和其他特殊字符位于错误的位置,但在这里我真的不知道如何修复它。

有人知道我该怎么办吗?

==============更新

嗯,问题几乎自己解决了......显然我得到的 header 不是最后一个版本,所以有人把它给了我。

这是最后一个版本:

typedef unsigned short (API_ENTRY TFCTSRTCONTROLECOMPLET_S)
                   (unsigned short NumeroSession);
extern TFCTSRTCONTROLECOMPLET_S SRT_ControleComplet_S;

现在有了 extern 就好多了。

感谢您对我的帮助和建议!

最佳答案

这不是一个可以调用的函数,它是一个类型(在 typedef 中指定)。 例如:

typedef int (*foo) (int bar);

int func1 (int bar) {
    return bar + bar;
}

int func2 (int bar) {
    return bar * bar;
}

int main (void) {
    foo f_ptr;     // declare a variable
    f_ptr = func1; // set variable to func1
    f_ptr (10);    // returns 20
    f_ptr = func2; // set variable to func2
    f_ptr (10);    // results in 100
}

正如你在上面看到的,“foo”不是一个函数,而是一个函数的类型名。其他全部大写的内容是在某处 #define 的,因为我不知道预处理器用它做什么,所以我无法对其发表评论,只能说它必须至少产生一个星号。

关于C : error: expected expression before âSRT_ControleComplet_Sâ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23130325/

相关文章:

我可以有一个地址族独立的网络数据包结构吗?

c++ - 将大小未知的 vector 传递给函数

c - 使用变量作为函数参数和直接使用字符串作为函数参数有什么区别?

c - ./geany_run_script.sh : Segmentation fault

c - 如何使用scanf()读取逻辑语句“输入可以变化,只能读取变量,而不能读取格式”

c++ - 在 C++ 类中保存函数

javascript - 如何将 bool 函数数组组合成单个 bool 函数?

MySQL查询来计算多个表中的所有记录

c - printf 不在控制台上打印

c - 第 5 次扫描后出现段错误