initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
时间: 2023-11-24 11:07:30 浏览: 69
这个问题通常发生在尝试修改 const 限定的指针所指向的变量的值时。编译器会提示 initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] 的警告信息,告诉你修改 const 限定的指针所指向的变量的值是不安全的。
例如,下面的代码会触发这个警告信息:
```c
const int x = 10;
const int* ptr = &x;
*ptr = 20; // 这里会触发警告信息
```
在这个例子中,变量 x 被声明为 const int 类型,指针 ptr 也被声明为 const int* 类型,表示 ptr 所指向的变量是只读的。然而,在尝试修改 *ptr 的值时,编译器会提示上述警告信息,告诉你这样的操作是不安全的。
相关问题
warning: initialization discards ‘const’ qualifier from pointer target type
这个warning表示在初始化时,舍弃了指针目标类型的const限定符。这通常发生在声明了一个指向const类型的指针,然后在初始化时将它赋值给了一个指向非const类型的指针,会导致const属性被丢弃。例如:
```
const char *str = "hello";
char *str2 = str; // 报warning:discards ‘const’ qualifier
```
解决这个问题的方法是,在声明指针变量时加上const限定符,或者使用强制类型转换。例如:
```
const char *str = "hello";
const char *str2 = str; // 正确,保留了const属性
char *str3 = (char*)str; // 正确,使用强制类型转换
```
initialization discards ‘const’ qualifier from pointer target type是什么意思
这个错误信息通常出现在C或C++语言中,意思是初始化时舍弃了指针目标类型的const限定符。具体来说,这个错误通常在试图将一个常量指针(const pointer)赋值给一个非常量指针(non-const pointer)时出现。因为常量指针指向的内存区域是只读的,不能通过非常量指针修改其中的值,因此编译器会报出这个错误。解决这个错误的方法是将目标指针的类型声明为const指针或者将源指针的类型声明为非常量指针。
阅读全文