• 使用部分函数时并未include其所在头文件,但是能编译成功且能运行,为什么?


    最近在看APUE,试了上面的一些例子,其中有个例子是使用getpid函数获取进程id,但是在我写demo时,并未引入其所在的头文件unistd.h,结果也能编译成功,也能运行,于是就琢磨下为啥。
    Environment info: Ubuntu 18.04.2 LTS, gcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5
    示意代码如下:

    int main (int argc, char *argv[]) {
        long pid = (long)getpid();
        long test = pid + 1;
    }
    
    

    在satckoverflow上有人告诉我,因为我用的是GCC4系列,使用是的C90标准且自带GUN扩展,所以对这种问题不给出警告,且能成功运行。
    如果是C99标准就会编译时有警告。
    同时指出即使能成功运行但是这是一个不好的习惯,所以还是要严格include

    我意外试了下 在CDT中可以一样使用ctrl+shift+o 进行自动include
    也可以使用 ctrl+shift+T 进行库查找...

  • 相关阅读:
    转: CEF嵌入到单文档mfc
    浅谈C++多态性
    C++面试整理1
    面试汇总
    【转】一些经典的笔试题
    C# 委托
    搭建Nuget
    thinkphp框架之模型(数据库查询)
    利用csc.exe 手动编译C#程序
    css
  • 原文地址:https://www.cnblogs.com/simoncook/p/12286271.html
Copyright © 2020-2023  润新知