C语言宏定义名可以有括号和分号吗?

宏定义的名称,是C语言标识符的一种,和函数名,变量名的命名规则是一样的,只允许使用数字,字母,下划线,且不能以数字开头。

所以宏名是不可以有括号和分号的。

另外,在C语言编程中,一般约定宏名用大写字母加下划线组成,而避免使用小写字母。这一条并非是C语言规范强制要求,而是编程时的一种习惯。

为什么C语言宏定义总是编译出错?求大神指教?软件设置问题?

解答:如果不确定编译器设置是否正确,可以把代码粘贴到在线IDE(例如ideone)上去编译、运行,查看出错信息。

两点建议:编程问题建议去相关论坛发帖子,比如stackoverflow或者csdn;讨论具体的编程问题,一定要附上代码。

请问C语言中宏定义怎么用

宏定义就好像是WORD中的“全部替换”一样,只不过这个替换是在将源程序在系统“编译”时执行的。

#define sub(a,b) ((a)-(b))

源程序中若有

x=sub(200-1,100+10);

会被编译为:

x=((200-1)-(100+10));

即x被赋值为89

如果#define sub(a,b) a-b的话

x=sub(200-1,100+10);

就变成x=200-1-100+10;

x会被赋值为109

c语言关于宏定义、函数

宏定义的基础知识。引用宏定义时,直接代入进行代换。

既然已经宏定义SUB(a) (a)-(a),而程序中出现的对应a的是a+b,那么就将a换为a+b代入表达式:

d=SUB(a+b)*c=(a+b)-(a+b)*c=(2+3)-(2+3)*5

直接用(a+b)-(a+b)代换SUB(a+b)。这一点和数学是不同的,不要强行往数学上靠。c语言的字符是用ascii码表示的。每一个字符对应一个整数。同样的,每一个整数也对应一个字符。a~z对应66~90。a~z对应97~122的数。ch大于a小于z时让它 a-a,正好可以把它的ascii码变为a~z区间内的整数。

c语言宏定义(c语言宏定义是什么意思)相关推荐

  1. C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针

    目录 预编译 值传递.指针传递.引用传递 数组 typedef 函数指针 预编译 预编译又叫预处理.预编译不是编译,而是编译前的处理.这个操作是在正式编译之前由系统自动完成的.#define 和 #i ...

  2. c语言数组宏定义标识符,C语言学习笔记--预编译/宏定义/数组/参数传递/函数指针...

    目录 预编译 值传递.指针传递.引用传递 数组 typedef 函数指针 预编译 预编译又叫预处理.预编译不是编译,而是编译前的处理.这个操作是在正式编译之前由系统自动完成的.#define 和 #i ...

  3. 【C语言】----宏定义,预处理宏

    什么是宏? 宏是学习任何语言所不可缺少的,优秀的宏定义可以使得代码变得很简洁且高效,有效地提高编程效率. 宏是一种预处理指令,它提供了一种机制,可以用来替换源代码中的字符串,解释器或编译器在遇到宏时会 ...

  4. .net 宏定义_C语言基础知识:几种特殊的函数宏封装方式

    函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销. 函数宏本质上为宏,可以直接进行定义,例如: #define INT ...

  5. 条件编译宏定义_C语言学习- 预处理指令2 - 条件编译

    上一篇已经介绍了预处理指令中的宏定义,这篇就介绍一下条件编译! 条件编译的概念 在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执 ...

  6. abs int 宏定义_【C语言】15-预处理指令1-宏定义

    说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 预处理指令简介 1.C语言在对 ...

  7. c语言解除宏定义_C语言宏定义 define,及一些陷阱!

    https://m.toutiaocdn.com/group/6584292311289561607/?iid=39362926900&app=news_article&timesta ...

  8. [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)

    文章目录 前言 一,static关键字 二,#define 定义常量和宏 三,初识指针 总结 前言 本节主要记录初识C语言第四节内容. 内容包括:static关键字------#define 定义常量 ...

  9. C语言宏定义-跟踪调试宏

    C语言宏定义-跟踪调试宏 文章目录 C语言宏定义-跟踪调试宏 1. 简介 2. 相关宏 3. 例子 1. 简介 标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预 ...

最新文章

  1. Windows Azure 架构指南 – 第 1卷 发布
  2. two sum 3道题
  3. linux输入法没有候选,fcitx中文输入法没有备选框
  4. javscript 创建类的三种方法【转】
  5. HDU/HDOJ 1800 Flying to the Mars 搜索
  6. 图片加载框架之 ImageLoader
  7. Mozilla推荐的CSS属性书写顺序及命名规则
  8. 渠道下沉 阿里争食社区经济最后一公里
  9. 细数那些年ZStack拿过奖的案例
  10. 流水灯及注释c语言,流水灯 - 单片机教程 - C语言网
  11. 13M initrd .config ubuntu 4.15.18
  12. cvtColor +内存泄漏
  13. 微信客服介绍和使用指引(4.19)
  14. 你到底是前端人还是搬砖人?推荐一款国产摸鱼神器!
  15. Windows 11的Android虚拟机
  16. RGB888 和 RGB565
  17. 机器学习 之 Kmeans聚类
  18. 《墨菲定律》读书笔记(3)
  19. 语音识别入门第七节:语言模型(实战篇)
  20. 发现同义词 python_python – 使用WordNet查找同义词,定义和例句

热门文章

  1. python算法专项(六)——Tensorflow原理基础,三层网络
  2. Makefile的filter和filter-out
  3. 最新友价T5仿虚拟交易商城网站源码+PHP内核
  4. R语言绘图之ggplot2包
  5. RAID超级简单的教程
  6. linux系统下ls -r命令的简单实现(C语言版)
  7. 注意力机制、bmm运算
  8. PyQt5快速开发与实战 5.2 容器:装载更多的控件
  9. 农夫过河c语言算法,农夫过河
  10. 【数据库修复】Mallox勒索病毒家族的数据库文件可100%修复