编译器声明指针在不使用时是const

时间:2014-02-07 22:59:01

标签: c gcc

我的编译器发出此警告:

  
    

inlinedata.h:9:6:注意:预期'char *'但参数类型为'const char *'

  
int  inline_data_receive(char *data,int length);

我不明白为什么它声称'data'是一个const指针,当它没有写成const char *时。

2 个答案:

答案 0 :(得分:5)

它说参数(您传入的数据)是const。例如,它可能是一个字符串文字。所以不要这样做:

ret = inline_data_receive("hello", len);

这样做

char str[] = "hello";
ret = inline_data_receive(str, len);

你需要这样做,因为该函数不能保证它不会修改输入字符串。

答案 1 :(得分:3)

编译器抱怨您将const char*值传递给标记为char*的值。基本上如下

const char* c = ...;
inline_data_receive(c, strlen(c));

编译器抱怨cconst char*,但需要char*才能与参数data

对齐