【发布时间】:2018-06-03 21:19:16
【问题描述】:
我有一个简单的 C 函数,我想将一组指针传递给各种字符串。我遇到了编译器对我的函数调用参数咆哮的问题。这是我在做什么的简单表示,
myfunction.h
int myServices(int, char *[]);
myfunction.c
#include <myfunction.h>
int myService(int value, char *strpointer[]) {
***
}
mainroutine.c
#include <myfuntion.h>
void main () {
// Initialize Parameters
int result;
int stringcnt;
char string1[8] = "-st";
char string2[8] = "-ir";
char * stringptr[10];
// Initialize stringptr
stringptr[0] = string1;
stringptr[1] = string2;
stringcnt = 2;
// Call Service
result = myService(stringcnt, stringptr); <== gcc issue with stringptr
}
C 编译器不断给我一个“成员的无效使用(你忘记了'&'吗?”在 myService 调用中带有 stringptr。我在 myService 调用中尝试了带有 stringptr 的 '&' 和 '*'没有运气的主程序。任何想法。
【问题讨论】:
-
我注意到的几件事...
int myServices(int char *[]);int myService(int value, char *strpointer[])不排队?是哪个? -
缺少逗号。编辑源代码。
-
void main (argc, argv[])-- 真的吗?你的书是这么说的? -
对错误感到抱歉。我只是在没有使用 IDE 的情况下键入了一个有代表性的示例。只是试图让代码专注于问题。
-
int main()或int main( int argc, char * argv[] )(或char * * argv,这会“更正确”,但出于个人原因我不喜欢)。至于提出minimal reproducible example,您要做的第一件事就是取消多个文件。是的,这就是您希望它在您的项目中的外观。不,这与您在这里提出的问题无关。将试图重现您的问题的人员的工作量减少到最低限度。通常这已经有助于解决一些问题。
标签: c arrays parameter-passing