【问题标题】:.c extension vs .C extension.c 扩展名与 .C 扩展名
【发布时间】:2019-01-19 08:01:42
【问题描述】:

我试图编译一个非常简单的程序,它将字符串文字的基地址存储在 指向 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 pointers warnings codeblocks deprecation-warning


    【解决方案1】:

    显然,您的编译器通常将 .C 文件视为 C++ 源代码,在这种情况下确实不推荐使用这种转换。如果您将其重命名为 .cpp,那么编译器输出可能应该保持不变。

    【讨论】:

    • 那么标准中是否有任何规则,或者它只是编译器依赖于编译器?它还会对我使用 .C 而不是 .c 编译的所有程序产生相同的影响吗?
    • 我不相信任何工作标准都规定了对源文件命名的要求(毕竟不可能没有源文件。)这只是一个流行的约定。
    • @Noshiii 这也可能取决于您的操作系统。 Linux 区分大小写,Windows 不区分大小写。至于 C 标准,它对如何命名源文件没有任何要求。
    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    相关资源
    最近更新 更多