前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言书籍——B/陷阱之处(2)

C语言书籍——B/陷阱之处(2)

作者头像
用户11015888
发布2024-03-24 10:05:37
650
发布2024-03-24 10:05:37
举报
文章被收录于专栏:csdncsdn

文章参考于文献:《C陷阱与缺陷》[美]Andrew Koening

链接陷阱

一、什么是连接器

典型的链接器把由编译器或汇编器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体–该实体能够被操作系统直接执行。

链接器通常把目标模块看成是由一组外部对象组成的。每个外部对象代表着机器内存中的某个部分,并通过一个外部名称来识别。因此,==程序中的每个函数和每个外部变量,如果没有被声明为static,就都是一个外部对象。==某些C编译器会对静态函数和静态变量的名称做一定改变,将它们也作为外部对象。由于经过了“名称修饰”,因此它们不会与其它源程序文件中的同名函数或同名变量发生命名冲突。

二、声明与定义

三、命名冲突与 static 修饰符

四、形参、实参与返回值

五、检查外部类型

六、头文件

库函数陷阱

一、返回整数的 getchar 函数

二、更新顺序文件

三、缓冲输出与内存分配

四、使用 errno 检测错误

五、库函数signal

预处理陷阱

一、不能忽视宏定义中的空格

二、宏并不是函数

三、宏并不是语句

四、宏并不是类型定义

可移植性缺陷

一、应对C语言标准变更

二、标识符名称的限制

三、整数的大小

四、字符是有符号整数还是无符号整数

五、移位运算符

六、内存位置0

七、除法运算时发生的截断

八、随机数的大小

九、大小写转换

十、首先释放,然后重新分配

十一、可移植性问题的一个例子

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 链接陷阱
    • 一、什么是连接器
      • 二、声明与定义
        • 三、命名冲突与 static 修饰符
          • 四、形参、实参与返回值
            • 五、检查外部类型
              • 六、头文件
                • 库函数陷阱
                  • 一、返回整数的 getchar 函数
                  • 二、更新顺序文件
                  • 三、缓冲输出与内存分配
                  • 四、使用 errno 检测错误
                  • 五、库函数signal
                • 预处理陷阱
                  • 一、不能忽视宏定义中的空格
                  • 二、宏并不是函数
                  • 三、宏并不是语句
                  • 四、宏并不是类型定义
                • 可移植性缺陷
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档