我可以在C中声​​明一个名为CURSES的函数吗?

时间:2012-02-11 19:28:46

标签: c linux

在Linux平台上,我因使用名为CURSES的函数而遇到编译错误。如果我将名称更改为其他名称,例如“my_curses”,则不会再出现错误 我知道有一个curses.h,但我不知道任何名为CURSES的函数。在标准库或内置库中是否存在一个名为CURSES的函数?

原型: void CURSES(int x)

错误: “错误:数字常量之前的语法错误”

然后在函数声明中,我得到了一堆类似的错误以及一堆“冲突类型”的错误。

4 个答案:

答案 0 :(得分:6)

CURSES可能是一个定义。所以你的选择是:

  • #undef CURSES ---这不是一个好的选择,除非你确切地知道WHERE和WHO使用这个定义。
  • 调用你的函数Curses,或cURSES或只是诅咒。
  • 将名称更改为您的功能。

编辑:我的包含一个简单的grep告诉我curses.h和ncurses.h都有这行

#define CURSES 1

答案 1 :(得分:1)

  

问:我可以在C中声​​明一个名为curses的函数吗?

答:好的。 “curses()”和“CURSES()”都是合法的名称。

  

问:错误:“错误:数字常量之前的语法错误”

如果您在错误行之前,之后和之后粘贴代码会很有帮助。这可能很简单。也许你只是忘记了“;”原型之后?

实施例

void CURSES(int x);

ALSO:

1)完全有可能与其他一些不同的函数或#define“CURSES”发生冲突。检查您的#include's(或将#include's剪切/粘贴到您的帖子中)。

2)“CURSES”是一个合法的函数名称......但它是一个糟糕的选择。我只会对#define宏使用大写字母(而不是函数名)。

实施例

#define MY_MACRO(x)

void my_function (int x);

答案 2 :(得分:0)

编译器说这不是函数名,而是常量

决定使用其他名称。

答案 3 :(得分:-4)

你有一个原型声明void CURSES(int x)。这是无效的,在C中原型声明应该是:void CURSES(int)。然后你的函数实现/声明就像:

void CURSES(int x) {
    printf("Curses! Got: %d\n", x);
}