当前位置: 首页 > wzjs >正文

东莞网站建设制作免费咨福建祥盛建设有限公司网站

东莞网站建设制作免费咨,福建祥盛建设有限公司网站,阿里接外包吗网站开发,抚顺网站建设推荐宏概述 在编程中,宏(Macro)是一种预处理器指令 宏可以让程序员在源代码中定义一段值或代码的别名,在编译程序之前,预处理器会查找这些宏,并将其替换为相应的值或代码 C 宏 在 C 中,宏可以通过…

宏概述

  1. 在编程中,宏(Macro)是一种预处理器指令

  2. 宏可以让程序员在源代码中定义一段值或代码的别名,在编译程序之前,预处理器会查找这些宏,并将其替换为相应的值或代码


C++ 宏

  1. 在 C++ 中,宏可以通过预处理器指令 #define 来定义

  2. 宏可以是简单的常量替换,也可以函数样式的宏(函数样式的宏并不是真正的函数)

  3. 宏通常全大写以区别于变量

  4. 可以使用反斜杠(\)实现多行宏


一、简单常量替换宏

#include <iostream>using namespace std;#define PI 3.14159int main() {cout << PI << endl;double radius = 5.0;double area = PI * radius * radius;cout << area << endl;return 0;
}
  • 输出结果
3.14159
78.5397

二、函数样式的宏

#include <iostream>using namespace std;// 使用反斜杠(\)实现多行宏
#define CALCULATE_MAXIMUM_1(firstNumber, secondNumber) \((firstNumber > secondNumber) ? firstNumber : secondNumber)#define CALCULATE_MAXIMUM_2(firstNumber, secondNumber) ((firstNumber > secondNumber) ? firstNumber : secondNumber)int main() {int a = 5, b = 10;int result1 = CALCULATE_MAXIMUM_1(a, b);int result2 = CALCULATE_MAXIMUM_2(a, b);cout << result1 << endl;cout << result2 << endl;return 0;
}
  • 输出结果
10
10

三、多行宏

#include <stdio.h>// 使用反斜杠(\)实现多行宏
#define PRINT_SUM(a, b) \printf("%d + %d = ", (a), (b)); \printf("%d\n", (a)+(b))int main() {PRINT_SUM(3, 5);return 0;
}

四、预定义宏

#include <stdio.h>int main() {printf("File: %s\n", __FILE__); // 当前文件名printf("Line: %d\n", __LINE__); // 当前行号printf("Date: %s\n", __DATE__); // 编译日期printf("Time: %s\n", __TIME__); // 编译时间return 0;
}

五、宏的特殊用法

1、字符串化宏
(1)基本介绍
#define STRINGIFY(x) #x
  • 将宏参数 x 直接转换为字符串常量(在编译期展开)
(2)演示
#include <iostream>using namespace std;#define STRINGIFY(x) #xint main() {// 将变量名转为字符串int someVar = 42;cout << "变量名: " << STRINGIFY(someVar) << endl;// 将表达式转为字符串cout << "表达式: " << STRINGIFY(3 + 5 * 2) << endl;return 0;
}
  • 输出结果
变量名: someVar
表达式: 3 + 5 * 2
2、连接宏
(1)基本介绍
#define STRINGIFY(x) #x
  • 将两个宏参数 a 和 b 直接拼接成一个符号(在编译期展开)
(2)演示
#include <iostream>using namespace std;#define CONCAT(a, b) a##bvoid print_hello()
{cout << "Hello World" << endl;
}int main() {// 拼接变量名int xy = 100;cout << CONCAT(x, y) << endl;// 拼接函数名CONCAT(print_, hello)();return 0;
}
  • 输出结果
100
Hello World
3、可变参数日志宏
(1)基本介绍
#define LOG(fmt, ...) printf("[LOG] " fmt "\n", ##__VA_ARGS__)
  • 可变参数日志输出,支持格式化字符串
(2)关键语法解析
  1. 字符串字面量的自动拼接
"[LOG] " fmt "\n"// 等价于
"[LOG] " "your_format" "\n"// 合并后
"[LOG] your_format\n"
  1. ##__VA_ARGS__ 是传入的可变参数,## 前缀用于当可变参数为空时,自动删除前面的逗号
LOG("No args");// 展开为
printf("[LOG] " "No args" "\n",);// 使用 ## 前缀后
printf("[LOG] " "No args" "\n");
(3)演示
#include <cstdio>#define LOG(fmt, ...) printf("[LOG] " fmt "\n", ##__VA_ARGS__)int main() {int error_code = 404;const char* path = "/index.html";LOG("程序启动");LOG("文件 %s 未找到,错误码: %d", path, error_code);return 0;
}
  • 输出结果
[LOG] 程序启动
[LOG] 文件 /index.html 未找到,错误码: 404
http://www.dtcms.com/wzjs/812549.html

相关文章:

  • 如何申请免费网站招工网站怎么做
  • 学习做网站只学过c做设计的地图网站
  • 象山网站建设教育培训机构加盟十大排名
  • 建设网站需要什么建设个商城网站需要多少钱
  • 网站空间备案要多久灌云网站制作
  • 政务网站集约化建设外贸网站建设公司哪家好
  • 国内做的好的游艇网站北京微信公众号网站建设
  • 福建建设局网站招标哪里的网站建设好
  • 郴州网站建设软件定制开发制作wordpress 默认搜索引擎
  • 网站营销是什么双语外贸网站源码
  • 网站举报电话是多少网页设计师证书含金量高吗
  • 赣州稳稳科技有限公司不改变网站怎么做关键词优化
  • 房产网站模板wordpress评论框提示
  • 出名的网站制作正规公司免费网络验证
  • wordpress建站系统西安模板建网站
  • 杭州网站开发设计网页设计购物网站模板
  • 网站要怎么创建用python做的网站模板
  • 网站建设邀标方案python基础教程pdf第三版
  • 郑州企业建站详情偃师建设局网站
  • 网站建设定制单网站设计 广西
  • seo 网站案例南京做网站咨询南京乐识
  • 镇网站制作价格免费公司起名网大全
  • 网站建设策划书 范文邢台网站维护
  • 织梦dede建站教程视频国家免费职业培训平台
  • 做网站开发面临的困难有哪些ui的设计网站
  • 营销型网站源码番禺电商网站建设
  • 百色住房和城乡建设部网站怎么做网页赚取点击率从而赚钱
  • 酒店网站的设计摘要什么是网站主题
  • 做网站是自学app开发难吗
  • 网站直播怎么做seo是什么意思的缩写