关于#ar#的问题,如何解决?

程序运行没有问题但有提示,在第20和21行出现[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings],不是很理解

#include<stdio.h>
#include<stdlib.h>

int global_uninit_var;
int global_init_var1 = 520;
int global_init_var2 = 880;

void func(void);
void func(void)
{
    ;
}
int main(void)
{
    int local_var1;
    int local_var2;
    static int static_uninit_var;
    static int static_init_var = 456;
    const int const_var = 123;
    char *str1 = "I love Fish.com!";
    char *str2 = "You are right";
    
    int *malloc_var = (int *)malloc(sizeof(int));
    
    printf("addr of func -> %p\n",func);
    printf("addr of str1 -> %p\n",str1);
    printf("addr of str2 -> %p\n",str2);
    printf("addr of global_init_var1 -> %p\n",&global_init_var1);
    printf("addr of global_init_var2 -> %p\n",&global_init_var2 );
    printf("addr of static_init_var -> %p\n",&static_init_var);
    printf("addr of static_uninit_var -> %p\n",&static_uninit_var);
    printf("addr of global_uninit_var -> %p\n",&global_uninit_var);
    printf("addr of malloc_var -> %p\n",&malloc_var);
    printf("addr of local_var1 -> %p\n",&local_var1);
    printf("addr of local_var2 -> %p\n",&local_var2);
    
    return 0;
}

C 语言中 字符串字面值的类型是 char* 而 C++ 中是 const char* 你在 那两行 char* 改成const char*

或者 编译选项 设置 -Wno-write-strings

你可以看看这个

【C/C++】C语言工程转C++工程,去除旧代码中的警告和错误_Loup&卡普的博客-CSDN博客

你的编译器认为你创建了 C++工程

如果有用,麻烦给个采纳

char *str1 = "I love Fish.com!";
char *str2 = "You are right";
这两句定义了两个字符串常量,C++语法要求前面加上 const 修饰符:const char *str1 = "I love Fish.com!"; const char *str2 = "You are right";

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^