我有一个简单的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调用中忘记了'&amp;'?”和stringptr。我在myService调用中尝试了'&amp;'和'*'和stringptr在主要的例程中没有运气。任何想法。
答案 0 :(得分:2)
我运行你的代码并注意到一些事情:首先在你的头文件中你没有正确定义参数(缺少昏迷的情况),同样你的主入口点没有正确的返回类型(需要是int)也不是参数(int argc,char * argv [])。我做了改动并将它们附在下面:
// func.h
int myService(int, char*[]);
然后是功能代码:
// func.c
#include "func.h"
int myService(int value, char *strpointer[]) {
// your code here
return 0;
}
// prog.c
-
#include "func.h"
int main (int argc, char *argv[]) {
// 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);
return 0;
}
我使用命令gcc -o prog.o prog.c func.c
编译了这个,没有错误和顺利执行。希望这对你有用