为了理想生活而奋斗 2023-07-24 15:54 采纳率: 91.4%
浏览 25
已结题

关于#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;
}

  • 写回答

3条回答 默认 最新

  • Loup&卡普 2023-07-24 16:13
    关注

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

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

    你可以看看这个

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

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

    如果有用,麻烦给个采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月24日