关于define

关于define

1.用预处理指令#define声明一个常数,用以表示一年中有多少秒(忽略闰年问题)

define SECONDS_PER_YEAR (60 60 24 *365)UL (UL为无符号长整形)

2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个

define MIN(A,B)   ( (A) >=(B) ? (A) : (B) )

define定义的宏和const定义的常量有什么区别

答:

  • define定义宏的指令,程序会在预处理阶段将用define所定义的内容进行替换,因此程序在运行时,常量表中并没有用define定义的宏,系统并不为它分配内存,而且在编译时不会检查数据类型,出错的概率会大一些。
  • 而用const定义的常量,在程序运行时是存在常量表中,系统会为他分配内存,而且在编译时会进行类型检查。
  • 在使用define有一个注意点,就是要注意define的边缘效应。
  • define在预处理阶段进行替换,const常量在编译阶段使用
  • 宏不做类型检查,仅仅进行替换,const常量有数据类型,会执行类型检查
  • define不能调试,const常量可以调试
  • define定义的常量在替换后运行过程中会不断地占用内存,而const定义的常量存储在数据段只有一份copy,效率更高
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 1,798评论 1 6
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,545评论 1 51
  • 早上梦见你,你瘦了,留着长头发,当时好像跟你的老师在说话。忘了你拿一袋什么东西,你进去办公室后,我也跟你进去了,你...
    严重强迫症的CXTING阅读 252评论 0 0
  • 一支香烟 被一个男人拈起 点燃,优雅地享用 他开始吞云吐雾 指间燃烧的香烟 殷红色跳动的心 一点一点烧透浑身 一些...
    Love_999阅读 589评论 0 7
  • 佛言:因触生贪,缘贪有爱。因爱有取,是故有有。缘有有生,是故老死呈现。若无有触,则不生贪,无有贪则不生爱。於爱不取...
    慈勤阅读 768评论 0 0