专栏首页C语言入门到精通基础知识 | 每日一练(101)

基础知识 | 每日一练(101)

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

学生:警告信息 “warning: macro replacement within a string lit-

eral” 是什么意思?

小林:有些 ANSI 前的编译器/预处理器把下面这样的宏

#define TRACE(var, fmt) printf("TRACE: var = fmt\n", var)解释为TRACE(i, %d);这样的调用会被扩展为printf("TRACE: i = %d\n", i);换言之, 字符串常量内部也作了宏参数扩展。K&R 和标准 C 都没有定义这样的宏扩展。当你希望把宏参数转成字符串时,你可以使用新的预处理操作符 # 和字符串常量连接 (ANSI 的另一个新功能):

#define TRACE(var, fmt) \

printf("TRACE: " #var " = " #fmt "\n", var)

学生:在我用 #ifdef 去掉的代码里出现了奇怪的语法错误。

小林:在 ANSI C 中, 被 #if, #ifdef 或 #ifndef “关掉” 的代码仍然必须包含 “合法的预处理符号”。这意味着字符 " 和 ’ 必须像在真正的 C 代码中那样严格配对, 且这样的配对不能跨行。特别要注意缩略语中的撇号看起来很像字符常量的开始。因此, 自然语言的注释和伪代码必须写在 “正式的” 注释分界符 /* 和 */ 中。

本文分享自微信公众号 - C语言入门到精通(gh_780327809188)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基础知识 | 每日一面(71)

    这段代码把 opname 置为 “plus” 而不是 “OP”。在使用符号粘接操作符 ## 连接两个宏的值 (而不是名字) 时也要采用同样的“迂回战术”。

    闫小林
  • 编程小白 | 每日一练(64)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    闫小林
  • 编程小白 | 每日一练(15)

    这道理放在编程上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从编程小白进阶到高手,需要经历的是日积月累的学习,那么如何学习呢?当然是每天都...

    闫小林
  • 当Kotlin遇见数据结构丨使用哈夫曼编码压缩文件

    哈夫曼编码是一种编码格式,属于可变字长编码的一种,该方法依照字符出现的概率来构建异字头的平均长度最短的码字,最终实现根据使用频率来最大化节省码字(字符)的存储空...

    码脑
  • 对象储存cos-腾讯云对象储存cos

    COS是腾讯云提供的对象存储服务,功能非常强大,可以作为文件服务器,CDN加速,静态网页服务,还提供了图片的常用操作。

    张天华
  • 腾讯云对象储存cos的配置方法简单说明

    COS是腾讯云提供的对象存储服务,功能非常强大,可以作为文件服务器,CDN加速,静态网页服务,还提供了图片的常用操作。相关API文档:https://cloud...

    主机优惠教程
  • 当Kotlin遇见数据结构丨哈夫曼解码

    哈夫曼编码是一种编码格式,属于可变字长编码的一种,该方法依照字符出现的概率来构建异字头的平均长度最短的码字,最终实现根据使用频率来最大化节省码字(字符)的存储空...

    码脑
  • Linux Shell 中的 ()、(())、[]、[[]]、{} 怎么用是不是还傻傻分不清?

    ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命...

    昱良
  • Subversion版本控制基本操作

    YUM安装subversion软件(服务端和客户端都安装) # yum -y install subversion 服务端: 1)创建版本库 # mkdi...

    吴柯
  • express的router.js源码分析(router/index.js)

    router.js的代码其实是router/index.js,里面的代码是express的路由的核心和入口。下面我们看一下重要的代码。

    theanarkh

扫码关注云+社区

领取腾讯云代金券