我是StackOverflow的新手,我只是想知道为什么我的C代码给了我这个错误。我真的希望这个解决,如果有人能解释为什么会发生这种情况而不是给我答案,那将非常感激。
void scanningForWS(int argc, char **argv)
{
int number = 0;
int sflag = 0;
int opt = 0;
int *s = 0;
char *getopt = 0;
char *optarg = 0;
while ((opt = *getopt(argc, argv, "w:s")) != -1) //the *getopt gives me this error
//Error: Expression much have a pointer-to function
{
switch (opt)
{
case 's':
sflag = 1;
break;
case 'w':
number = atoi(optarg);
break;
default:
break;
}
}
}
这是while语句,我评论了需要的地方。
发现了问题,但尚未解决。我发现我没有unistd.h而且我无法得到它。有谁知道我能在哪里得到它?
答案 0 :(得分:1)
您正在声明一个与该函数同名的变量,我不能说您是否包含了正确的标题。
这不是函数声明FYI,该行声明指向char的指针并使用值0
初始化它。当前代码唯一有意义的方法是getopt
是否为函数指针,而不是函数指针。
您的代码应为:
#include <unistd.h>
void scanningForWS(int argc, char **argv)
{
int number = 0;
int sflag = 0;
int opt = 0;
int *s = 0;
/* char *getopt = 0; do not declare getopt as a variable,
just include the header uninstd.h and use it */
while ((opt = getopt(argc, argv, "w:s")) != -1)
/* ... */
}
答案 1 :(得分:1)
删除char *getopt;
getopt
是来自unistd.h
的函数,并且通过声明char指针你正在做一些非常奇怪的事情:)
答案 2 :(得分:0)
getopt返回int
,而不是int *
。
从while循环中删除*
:
while ((opt = getopt(argc, argv, "w:s")) != -1) //the *getopt gives me this error
为:
while ((opt = getopt(argc, argv, "w:s")) != -1) //the *getopt gives me this error