workspace/2.c/main.cpp:6:16: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] char *p ="1234567890"; ^ 1 warning generated.改正
时间: 2024-03-20 10:40:06 浏览: 16
可以将指针p的类型改为const char*,表示指向常量的指针,可以避免这个警告,改正后的代码如下:
```
#include <stdio.h>
int main(void)
{
char a = 1;
char c[] = "1234567890";
const char *p = "1234567890";
a = c[1];
a = p[1];
return 0;
}
```
这样就不会出现警告了。
相关问题
workspace/2.c/main.cpp:6:16: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] char *p ="1234567890"; ^ 1 warning generated.
这段代码在编译的时候给出了一个警告,警告内容为ISO C++11不允许将字符串字面值转换为'char *'。具体警告信息为:在第6行,将字符串字面值"1234567890"赋值给了一个char类型的指针p,而ISO C++11不允许这样做,因为字符串字面值是常量,不能被修改,而指针p又是可写的,可能会导致程序运行出错。建议将指针p的类型改为const char*,表示指向常量的指针,可以避免这个警告。
/workspace/2.c/main.cpp:4:8: note: replace parentheses with an initializer to declare a variable int f( );
这个错误信息提示您需要使用初始化器来声明变量,而不是使用括号。在 C++ 中,使用括号来声明一个函数,但是使用括号来声明一个变量是非法的。
例如,如果您想声明一个整数变量,您应该这样写:
```
int x = 0;
```
而不是这样写:
```
int x();
```
如果您想声明一个没有参数的函数,您可以这样写:
```
int f() {
// 函数体
}
```
而不是这样写:
```
int f( );
```
希望能帮到你。