宏使用的问题 比如:#define (a,b,c,d)

li_rui_1220 2018-01-06 10:42:04

如题:

#define (a,b,c,d)
这样的宏应该叫什么?有什么左右?


我想这是用来程序兼容的吗?
...全文
1160 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-01-10
  • 打赏
  • 举报
回复
引用 11 楼 paschen 的回复:
引用 5 楼 li_rui_1220 的回复:
这是LWIP代码中的,实际代码如下:#define sys_thread_new(n,t,a,s,p)
就是你无论输入什么参数,都替换为空,意义取决于你程序,可能在某些情况下替换为空,在某些情况下替换为别的
引用 9 楼 zhao4zhong1 的回复:
VS IDE中,在不明白的符号上点鼠标右键,选转到定义和查找所有引用。
理解讨论之前请先学会如何观察
「已注销」 2018-01-10
  • 打赏
  • 举报
回复
这一般是调试用,或者跨平台代码用的。 1. 调试
#ifdef _DEBUG
#define DebugPrint(x) cout << x << endl
#ele
#define DebugPrint(x)
#endif
代码中调用 DebugPrint 时,在调试版本的时候打出一些信息,正式版本可能只被替换为空,也就是一个分号。 2. 跨平台 如果你要封装一种库,比如网络库,界面库等。但有的时候,某个平台需要做一些额外操作,而另外一个平台不需要的时候,就会根据不同平台定义不同的宏,其中的一个平台这个宏被替换为空或 0 等。比如 Windows 平台的网络库需要调用 WSAStartup 加载 Windows Socket 库并使用 WSACleanup() 关闭,而 Linux 下不需要。这样有些开发者会定义一个通用的宏,作用是启动网络库。当系统为 Linux 时,定义为空,不作任何操作。
paschen 2018-01-09
  • 打赏
  • 举报
回复
引用 5 楼 li_rui_1220 的回复:
这是LWIP代码中的,实际代码如下:#define sys_thread_new(n,t,a,s,p)
就是你无论输入什么参数,都替换为空,意义取决于你程序,可能在某些情况下替换为空,在某些情况下替换为别的
leetow2006 2018-01-09
  • 打赏
  • 举报
回复
C++里好像就少用到宏替换
赵4老师 2018-01-08
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义和查找所有引用。
真相重于对错 2018-01-08
  • 打赏
  • 举报
回复
引用 7 楼 li_rui_1220 的回复:
[quote=引用 6 楼 hdt 的回复:] 宏就是替换 比如 #define max(x,y) x>y?x:y z = max(3,1); 替换为 z = 3>1?3:1; 以这段代码来看 #define sys_thread_new(n,t,a,s,p) 就是把sys_thread_new(....) 替换为空
存在的意义呢?[/quote] 你的意义指什么?没有上下文,何谈意义?
li_rui_1220 2018-01-08
  • 打赏
  • 举报
回复
引用 6 楼 hdt 的回复:
宏就是替换 比如 #define max(x,y) x>y?x:y z = max(3,1); 替换为 z = 3>1?3:1; 以这段代码来看 #define sys_thread_new(n,t,a,s,p) 就是把sys_thread_new(....) 替换为空
存在的意义呢?
真相重于对错 2018-01-08
  • 打赏
  • 举报
回复
宏就是替换 比如 #define max(x,y) x>y?x:y z = max(3,1); 替换为 z = 3>1?3:1; 以这段代码来看 #define sys_thread_new(n,t,a,s,p) 就是把sys_thread_new(....) 替换为空
li_rui_1220 2018-01-08
  • 打赏
  • 举报
回复
这是LWIP代码中的,实际代码如下:#define sys_thread_new(n,t,a,s,p)
li_rui_1220 2018-01-08
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
要看这个是用在什么环境里的。 这个宏定义里面会设计到逗号运算符。相当于#define (d)
这是LWIP代码中的,实际代码如下:#define sys_thread_new(n,t,a,s,p)
自信男孩 2018-01-06
  • 打赏
  • 举报
回复
要看这个是用在什么环境里的。 这个宏定义里面会设计到逗号运算符。相当于#define (d)
FoolCarpe 2018-01-06
  • 打赏
  • 举报
回复
代码会直接报错误
paschen 2018-01-06
  • 打赏
  • 举报
回复
没有#define (a,b,c,d)这种语法呢
1) 本套课程针对高校大学生系统学习C语言而录制,从0基础入门讲起,循序渐进,通俗易懂,同时适用于计算机系及非计算机系的同学。通过学习可以帮助大家掌握C语言本质,轻松面对C语言全国二级考试,并达到能独立完成中型C项目、C游戏的水平;2) 多数高校都开设了C语言课程,网上C语言课程也很多,但普遍存在两个问题: (1) 授课方式单一,大多是照着代码念一遍, 对刚刚接触编程的同学来说,感觉晦涩难懂 (2) 授课内容过度注重语法,没有项目实战支撑,造成课程枯燥无趣。本课程针对上述问题进行了改进 (1) 授课方式采用语法讲解+内存布局示意图+项目的方式,让课程生动有趣好理解 (2) 系统全面的讲解了C语言的核心技术点,还配套录制了《全国计算机二级C语言真题精讲》,让学员在掌握C语言编程的同时,还能轻松面对二级考试;3) 课程详细内容: 常量-变量、分支语句、循环语句、操作符和表达式、函数(库函数、自定义函数、递归调用 )、数组(一维数 组、二维数组、数组作为函数参数、指针数组)、指针(指针和指针类型、二级指针和多级指针、指针表达式解析、指针运算、数 组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运行环境、预定义符号、#define和#undef、和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、自定义类型(结构体、枚举 、联合)、动态内存管理、文件操作(i/o常量、i/o函数、流)。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧