.c 扩展名与 .C 扩展名

.c extension vs .C extension

我试图编译一个非常简单的程序,它将字符串文字的基地址存储在指向 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,那么编译器输出可能会保持不变。