求救,这问题出在哪:error C2660: 'getopt' : function does not take 3 parameters

时间:2022-11-10 17:03:03
在调试程序时,总是出现这个错误D:\Program Files\Microsoft Visual Studio\MyProjects\2\prefixspan.cpp(182) : error C2660: 'getopt' : function does not take 3 parameters
但是我在源程序中已经包括了"getopt.h"这个头文件,在主函数中也是这样调用的:
int opt= getopt(argc, argv, "vsM:m:d:");
这问题是出在哪儿呀,求救!!!!



13 个解决方案

#1


参数个数不对

#2


看看你的函数原型,肯定不是要求3个参数

#3


回去看看自己定义的原型

#4


错误问题就是
getopt : function does not take 3 parameters
函数getopt不接受3个参数,看看函数的声明吧

#5


头文件里也是带了三个参数:int getopt(int argc, char** argv, char* optstr);

#6


GETOPT是个posix函数,你的用法是对的,你加
  #include<stdio.h>
#include<unistd.h> 

试一下

MS已经不支持这个函数了

#7


开来是调用了古董级别的库函数

#8


呵呵。。。。
down个就是了

#9


楼上的对,这个函数在linux/unix下可以用

#10


是楼上的楼上的楼上的

#11


http://switch.dl.sourceforge.net/sourceforge/freegetopt/freegetopt-0.11.tar.gz

#12


这个是通用版本,随便你什么
呵呵

#13


int getopt(int argc, char** argv, char* optstr);
定义的是char*而非const char*;
因此不能直接赋const char*型数值"vsM:m:d:" 为第三个参数;
将 int opt= getopt(argc, argv, "vsM:m:d:");改成:
...
char tmp[]="vsM:m:d:";
int opt= getopt(argc, argv, tmp);
...
试试~ 应该可以了!

#1


参数个数不对

#2


看看你的函数原型,肯定不是要求3个参数

#3


回去看看自己定义的原型

#4


错误问题就是
getopt : function does not take 3 parameters
函数getopt不接受3个参数,看看函数的声明吧

#5


头文件里也是带了三个参数:int getopt(int argc, char** argv, char* optstr);

#6


GETOPT是个posix函数,你的用法是对的,你加
  #include<stdio.h>
#include<unistd.h> 

试一下

MS已经不支持这个函数了

#7


开来是调用了古董级别的库函数

#8


呵呵。。。。
down个就是了

#9


楼上的对,这个函数在linux/unix下可以用

#10


是楼上的楼上的楼上的

#11


http://switch.dl.sourceforge.net/sourceforge/freegetopt/freegetopt-0.11.tar.gz

#12


这个是通用版本,随便你什么
呵呵

#13


int getopt(int argc, char** argv, char* optstr);
定义的是char*而非const char*;
因此不能直接赋const char*型数值"vsM:m:d:" 为第三个参数;
将 int opt= getopt(argc, argv, "vsM:m:d:");改成:
...
char tmp[]="vsM:m:d:";
int opt= getopt(argc, argv, tmp);
...
试试~ 应该可以了!