0
char *doRequest(char *start, char**headers, char *body){}

这是我的功能,我以这种方式调用:

char *response ;
response = doRequest(strt_line, headers, body);

我收到这个警告:

警告:赋值从没有强制转换的指针生成整数

我该如何纠正?

4

1 回答 1

3

原因几乎可以肯定是您doRequest在尝试调用它之前未能以一种可见的方式声明它。要么添加一个函数原型(首选方式),要么将其定义移到调用它的函数的定义之上。

错误的方法:

int main() {
    char *start, *body, **headers;
    doRequest(start, headers, body);
}

char *doRequest(char *start, char**headers, char *body) {
    ...
}

正确的方法:

// Function prototype (argument names unnecessary but useful for ease of reading)
char *doRequest(char *start, char**headers, char *body);

int main() {
    char *start, *body, **headers;
    doRequest(start, headers, body);
}

char *doRequest(char *start, char**headers, char *body) {
    ...
}

这样做的原因是,当编译器在看到函数声明之前遇到函数调用时,它假定函数的返回类型是int.

于 2013-09-15T20:06:31.223 回答