c语言带参数的宏定义(c语言 宏参数)

本篇文章给大家谈谈c语言参数的宏定义,以及c语言 宏参数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、C语言中带参数的宏定义问题2、C语言中带参数的宏定义与函数的区别(试举例)3、c语言宏定义里带参数是什么意思?4、C语言 有参数宏定义5、C语言,带参数的宏定义

C语言中带参数的宏定义问题

上面是 宏 定义。

第一行 DEFINE…SUITE 是宏函数名,小括号里是 三个 形式参数。 定义为 下面第二行开始 含 续行号的 所有的行。 程序中出现 DEFINE…SUITE 宏函数时,均用 它的 定义句 做字符替代。

定义句替代宏函数时,凡是有 三个形式参数 的地方,用 实际参数 做字符替代。

## 是 连接符,用于一个Token 与另 一个Token 的 连接,(Token 也可以是另外的宏,也可以不是)。

例子: 若形参_sym的实际参数 是 XYZ, 那么 _test_str_##_sym[] 变成 _test_str_XYZ[]。 这个 _test_str_XYZ 是 static const char型 数组的名字。

后面还有个 .name = _test_str_XYZ, 也是token的连接。

C语言中带参数的宏定义与函数的区别(试举例)

宏只是字符的替换,在预处理阶段就给替换到代码中去了比如下面的代码

#include

#define

MAX(x,

y)

((x)(y)?(x):y())

int

main()

{

int

a

=

2,

b

=

4;

int

m;

m

=

MAX(2,

4);

printf(“%d\n”,

m);

return

0;

}

如果你用的是gcc编译器,执行

gcc

-E

main.c

-o

main.i,打开main.i文件就可以看到他是如何替换进去的,直接拖到最后,前面的都是stdio.h中的内容。

int

main()

{

int

a

=

2,

b

=

4;

int

m;

m

=

((2)(4)?(2):4());

printf(“%d\n”,

m);

return

0;

}

函数就不同了,函数还需要分配栈空间,在执行函数时都要进行入栈和出栈操作,有的还需要分配堆空间。

宏所实现的功能有限,而且长代码不易读,但是对于逻辑简单、代码不长、经常使用的功能由宏来实现是个不错的选择

c语言宏定义里带参数是什么意思?

C的宏可以用来替换常数,替换表达式,仔细把这个程序看完你就明白了,

#includestdio.h

#define SQ(x) ((x)*(x))

#define READ(x) scanf(“%d”,x)

#define WRITELN(x) printf(“%d\n”,x)

int main()

{

int x;

READ(x);

WRITELN(SQ(x+1));

return 0;

}

程序输入4 输出25

c语言带参数的宏定义(c语言 宏参数)

C语言 有参数宏定义

宏属于预编译,在编译的时候就将你的

SSSV(sa,sb,sc,vv);

替换成

sa=l*w;sb=l*h;sc=w*h;vv=w*l*h;

这些编译器已经给你处理了,宏这个就是直接替换

宏有编写规范的,你这里写的宏并不规范,建议上网查一下宏书写的规范

C语言,带参数的宏定义

Power2(x)这个宏的意思是把x用x*x代替

在你程序里,出现在括号里的东西是i+j,那么编译器就会用

i+j*i+j

的代码替换,如果是

#define

Power2(x)

(x)*(x),就会替换成(i+j)*(i+j),那么输出结果就是196。

同样,如果改成

#define

Power2(x)

x/x

那么代码就换替换成i+j/i+j,那么结果就是15。

关于c语言带参数的宏定义和c语言 宏参数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月4日 02:07:22
下一篇 2024年4月4日 02:18:40

相关推荐

  • c语言boolean,C语言bool的用法

    bool在c语言中是什么意思? 布尔型(bool)变量的值只有 真 (true) 和假 (false)。布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。 在C语言中,没有bool这种类型,但是在C++中,把bool当做一种基本的数据类型。在C语言中,当我们要表示真或假的时候,都是定义一…

    2024年5月18日
    3700
  • c语言的关键字和命令,c语言32个关键字详解

    C语言的全部命令?? 命令的基本形式如下:line number[filename]其中的数字为任何正整数,可选的文件名为任意有效文件标识符。行号为源程序中当前行号,文件名为源文件的名字。命令# line主要用于调试及其它特殊应用。 展开全部 我们可以在C源程序中插入传给编译程序的各中指令,这些指令被称为预处理器指令,它们扩充了程序设计的环境。 我的建议是:…

    2024年5月18日
    2700
  • c语言用到的软件,c语言有哪些软件

    c语言工作使用的软件? 1、常用的c语言编程软件有:devc++是比较容易上手的编程软件,优点是功能简洁,页面简洁。 2、C语言用Code:Blocks软件。Code:Blocks是一个开放源码的全功能的跨平台C/C++集成开发环境,由纯粹的C++语言开发完成,支持语法彩色醒目显示,支持代码完成、支持工程管理、项目构建、调试,而且具有灵活而强大的配置功能。 …

    2024年5月18日
    3500
  • c语言1245052,草莓熊代码编程C语言

    C语言和汇编语言的关系? 程序员编写的C语言代码,首先要经过C语言编译器,生成汇编代码,这个过程称为编译阶断,当C语言编译器生成汇编代码后,再调用汇编器来将汇编代码编译成汇编指令。 C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程…

    2024年5月18日
    4300
  • 求pi的c语言程序,用c语言求pi

    C语言的求π的值? 标准的C语言中没有π这个符号及常量,一般在开发过程中是通过开发人员自己定义这个常量的,最常见的方式是使用宏定义:#definePI141592。 首先,while循环,条件是某一项,也就是t的绝对值小于10的-6次方,fabs是求绝对值的函数。 后面应该是9,1..;可以用i=1; i+=2;来表示。 我们经常会运用C语言进行各种数学运算…

    2024年5月18日
    4300
  • c语言如何实现四舍五入,c语言怎样实现四舍五入

    c语言四舍五入 1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。 2、要用C语言实现四舍五入,有一个很巧妙的方法,仅使用int i=(int)(a+0.5)即可。如果遇到有负数的情况,只需要将加号改为减号即可…

    2024年5月18日
    3300
  • c语言子线程的建立,c语言设置线程优先级

    多线程pthread_create的参数 C语言使用pthread_create()函数完成多线程的创建,pthread_create()函数共有四个参数。 第三个参数是线程运行函数的起始地址。最后一个参数是运行函数的参数。 可以这样声明,但是在调用pthread_create函数的时候需要将线程函数的指针强制类型转换成void *(pthread)(voi…

    2024年5月18日
    4500
  • c语言几种循环结构,c语言循环结构有几种

    4、c语言程序循环结构两种基本循环是什么 您好,很高兴回答您的问题。在c语言中有三种基本结构,分别是顺序结构、选择结构和循环结构。其中循环结构是三种结构中最为复杂、且又包含其他两种结构,循环结构有两大基本结构:while结构和for结构。 while循环 while语句的一般形式为:while(表达式)语句。其中表达式是循环条件,语句为循环体。while语句…

    2024年5月18日
    4100
  • 空格分割c语言,c语言空格分隔输出

    C语言中用scanf加循环初始化数组,为什么每个数之间可以用空格隔开? 1、scanf在读取时遇到空格才把前面读到的内容赋给变量。你用空格分开时很自然三个变量都被赋了值。 2、c语言scanf输入时能用逗号隔开,但是输入数据的时候一定也要加上逗号。用scanf()读取数据时,输入的格式必须和scanf()的格式控制字符串对应。 3、scanf是格式化输入,即…

    2024年5月18日
    3700
  • c语言控制显示位置,c语言位置1

    C语言中调用bmp图片时能否设置图片显示的大小与位置?最好有直接可以使用… 1、include windows.h//读bmp图片需要两个结构#pragma pack(push, enter_defBM, 1) //指定内存对齐单位为1。 2、BMP由 (1)文件头,BITMAPFILEHEADER 结构 (2)BITMAPINFO结构 (3)颜…

    2024年5月18日
    3100

发表回复

登录后才能评论



关注微信