我试图编译一个非常简单的程序,该程序将字符串文字的基地址存储在指向char p的指针中,然后使用指针p如下打印字符串:

#include<stdio.h>

int main()
{
    char *p = "hello";
    printf("%s", p);
    return 0;
}

错误地,我用.C扩展名而不是.c扩展名保存了文件,并且我看到当我使用.C扩展名进行编译时,还有一个警告:
deprecated conversion from string constant to ‘char*’

当我编译带有.c扩展名的程序时,它不存在,我正在使用Code::Blocks 16.01。这里到底发生了什么?

最佳答案

显然,您的编译器通常将.C文件视为C++源,在这种情况下,实际上不建议使用此转换。如果将其重命名为.cpp,则编译器输出可能应该保持不变。

09-20 17:11