字符串赋值类型不完整

时间:2015-11-16 22:18:36

标签: c string variable-assignment incomplete-type

我有一个共享库,它接受一个新的提示(对于shell)作为参数argv[1]我也有一个全局变量提示类型字符串

char *prompt[];

int setprompt(int argc, char *argv[]) {
    prompt = argv[1];
    return 0;
}

我收到以下错误

  

setprompt.c:14:2:错误:'prompt'的类型不完整

     

prompt = argv [1];

     

^

3 个答案:

答案 0 :(得分:1)

在您的代码中,

char *prompt[];

您没有提供阵列的大小。

引用C11,章节§6.7.6.2

  

如果大小不存在,则数组类型为不完整类型。 [...]

只有在您提供初始化列表时才允许这样做,否则,您必须明确指定大小。

根据您的要求,将prompt设为char *即可。

答案 1 :(得分:1)

您无法使用该语法声明全局或本地,因为它表示未指定大小的数组。这样的声明可以作为函数参数使用,因为数组会衰减成指针。

在您的情况下,您需要一个指针,而不是一个指针数组:

char *prompt;

答案 2 :(得分:0)

应该声明为指针:

char *prompt;

传递给函数char *argv[]的这个参数是一个指针数组,你只需要从你的全局指针中分配一个元素。