我已经有一段时间没有用C语言编程了,而且在向函数传递字符串时遇到了问题。
代码可以工作,但是我收到了gcc的警告。
我用以下命令调用main中的函数:

copyToCode(code, section1, section2);

功能是:
void copyToCode (char **code, char *loc, char *data ){}

我在包含函数的行上得到“copyToCode的冲突类型”,在调用函数的行上得到“copyToCode的前一个隐式声明在这里”警告。
我已经声明了变量:
char *code = malloc (32*1000* sizeof(char));

char *section1 = malloc(8*sizeof(char)), *section2 = malloc(8*sizeof(char));
我也试过:
char *section1[8];
作为一个附加问题-哪一个是正确的?
section1和section2是字符串,代码是字符串数组。
谢谢你的阅读,谢谢你的帮助。
加雷斯

最佳答案

您需要在调用函数之前声明该函数,否则编译器将尝试以您的名义计算出函数原型。
信息
上一个copyToCode隐式声明
告诉你这个。隐式声明是编译器生成的声明,因为您尚未给它显式声明。
在您对问题的更新中,您说code是一个字符串数组,但您将其定义为:

char *code = malloc (32*1000* sizeof(char));

分配单个字符串的。字符串数组将保存在char**中,就像argv一样。您需要首先分配数组,它将包含n字符串,每个字符串都是char*。然后你必须在一个循环中逐个分配每个char*
在C++中,这种编码比标准的库字符串和向量类要容易得多。

关于c - 将字符串传递给C中的函数时,类型冲突警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5804565/

10-11 23:12
查看更多