我有一个共享库,它接受一个新的提示(对于shell)作为参数argv[1]
我也有一个全局变量提示类型字符串
char *prompt[];
int setprompt(int argc, char *argv[]) {
prompt = argv[1];
return 0;
}
我收到以下错误
setprompt.c:14:2:错误:'prompt'的类型不完整
prompt = argv [1];
^
答案 0 :(得分:1)
在您的代码中,
char *prompt[];
您没有提供阵列的大小。
引用C11
,章节§6.7.6.2
如果大小不存在,则数组类型为不完整类型。 [...]
只有在您提供初始化列表时才允许这样做,否则,您必须明确指定大小。
根据您的要求,将prompt
设为char *
即可。
答案 1 :(得分:1)
您无法使用该语法声明全局或本地,因为它表示未指定大小的数组。这样的声明可以作为函数参数使用,因为数组会衰减成指针。
在您的情况下,您需要一个指针,而不是一个指针数组:
char *prompt;
答案 2 :(得分:0)
应该声明为指针:
char *prompt;
传递给函数char *argv[]
的这个参数是一个指针数组,你只需要从你的全局指针中分配一个元素。