java define 宏_宏定义宏函数(日志输出)define
最常见的就是
#indef __cplusplus
这表示支持C++语法
再如可以定义常量
#define MAX 100
这跟JAVA全局变量有什么区别呢?
JAVA的变量是有类型的,这没有类型,这只是替换而以!
还有就是宏函数,就是就是当函数名太长时,可以简写而以!void cat_read(){
printf("%s\n","input something");
}#define jni(NAME) cat_##NAME();
void main(){
jni(read);
system("pause");
}
上面就是将cat_read这个方法函数,变成了 jni(read)来调用!很简单哇-
举个日志输出的例子#define LOG(FORMAT,...) printf(##FORMAT,__VA_ARGS__);
void main(){
LOG("%s","123");
system("pause");
}
定义了一个LOG函数,其实...表示不确定后面有几个参数,也许1个,也许多个,与后面的__VA_ARGS__对应,这表示可变参数,这是固定写法
第一个参数 FORMAT,并不是固定写法,可以替换成任意字符串,比如NAME
再比如,日志会有级别,比如I级,这里可以这样写#define LOG_I(FORMAT,...) printf("INFO:");printf(##FORMAT,__VA_ARGS__);
void main(){
LOG_I("%s", "123");
system("pause");
}
最终就会输出:INFO:123
说穿了就是替换。在程序的预编译期完成替换工作。
再来个升级的LOG写法#define LOG(LEVEL,FORMAT,...) printf(##LEVEL); printf(##FORMAT,__VA_ARGS__);
#define LOG_I(FORMAT,...) LOG("INFO:",##FORMAT,__VA_ARGS__);
void main(){
LOG_I("%s", "123");
system("pause");
}
相当于第二个LOG_I的定义,又引用了第一个定义,相当于替换了两次
java define 宏_宏定义宏函数(日志输出)define相关推荐
- 【Python定义一个函数,输出100以内是3的倍数的所有偶数】
题目: 定义一个函数,输出100以内是3的倍数的所有偶数. 思路: 先用def定义一个函数,后利用for循环遍历100以内所有数,并用if语句筛选数字,最后得出是3的倍数的偶数 代码: def fun ...
- [C语言] 在单片机的嵌入式开发中使用宏定义一键开关日志输出/打log调试
前言 在编写项目时,我们通常需要日志输出来帮助我们追踪程序执行的内容,以便在出现BUG时较为方便的复现,并在调试完成后快速的关闭过于详细的LOG输出,避免干扰使用中的体验,在函数中一个一个的增加pri ...
- access重命名自动保存的宏_如何将宏保存为自动执行的宏计算机二级access的一个题目。 题目完整为“请重命名宏mTest,并保存为自动执行宏。”...
共回答了19个问题采纳率:100% 关于宏 如果在 Microsoft Word 中反复执行某项任务,可以使用宏自动执行该任务.宏是一系列 Word 命令和指令,这些命令和指令组合在一起,形成了一个单 ...
- 华为如何在开发者选项观察错误日志_爬虫scrapy框架--log日志输出配置及使用
1.在配置文件中设置日志输出文件名和日志等级 1.为什么以日期为文件名? 因为这样可以方便开发者查看每天的日志信息,同时也可以防止单文件log日志信息堆积的越来越多,所以将当天日志信息保存到当天的日志 ...
- excel打印宏_使用Excel宏打印发票
excel打印宏 There is a sample file on my Contextures site, in which you can enter invoice details, then ...
- java native方法_并发系列-native函数回调Java方法原理实践
写在前面 上一篇分享了Java调用native函数过程原理实践,文章最后留了一个问题,本章主要对C程序回调我们的Java程序原理进行实践. 调用C程序之后他是怎么知道来调用我们我们的哪个方法?又是如何 ...
- java 固定值_这些频繁调用函数是否可以在dblquad中返回固定值?
该脚本使用SciPy的dblquad计算来自均匀充电环的(x0,y0,z0)处的电场 . 我的问题是关于 gfun 和 hfun 的使用,它定义了内积分限制对外积分变量的函数依赖性 . 如果我选择整合 ...
- python未定义_未定义Python函数
当我运行服务器(FLASK app)时,遇到一个函数未定义的错误: 名称错误:未定义名称"format_date" 这是我目前为止的所有代码:from flask import F ...
- java 未定义_未定义,未指定和实现定义的行为
Undefined behavior 是C和C语言的一个方面,对于来自其他语言的程序员来说可能会令人惊讶(其他语言试图更好地隐藏它) . 基本上,即使许多C编译器不会报告程序中的任何错误,也可以编写不 ...
最新文章
- 水晶报表设置FiledObject支持HTML格式的数据
- pycharm和python区别-python与pycharm有何区别
- php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版)
- 芭比扣了!Nacos中服务删除不了,肿么办?
- 【操作系统】进程与线程
- mac php csv 乱码,php 生成csv mac下乱码
- 学习Unix其实就这样简单
- R语言︱文本挖掘套餐包之——XML+SnowballC+tm包
- Server的Transfer和Response的Redirect
- 国科大学习资料--自然语言处理(宗成庆)-2019期末考试题
- 草图大师SketchUp2016下载和安装教程
- Three.js编辑器editor使用详解
- Python-支持向量机 决策边界 最大化margin、使用多项式特征和核函数、高斯核函数、超参数 γ、SVM解决回归问题
- Python——组合数据类型(字符串、元组、列表、字典)转换总结
- 腾讯云通信音视频通话最小化悬浮小窗
- 看不见世界的程序员,开发了一款“吃鸡”
- d3d透视逆向篇:第4课 方法一之D3D9游戏黑屏优化1 HOOK
- 访客一体机六大鸡肋功能
- 【OMNET+Veins+SUMO】【视频】车联网仿真框架搭建指南
- 简单的网易云音乐热门评论爬虫
热门文章
- ios 隐藏UIScrollView的滚动条
- php+python+java+c+html5+css3等各类IT视频教程合集500T
- 编译器大神 Chris Lattner 官宣新编程语言:Mojo,比 Python 快 35000 倍!
- Assembly.Get***Assembly的区别
- OpenCV 车辆检测/人脸识别+图像拼接+文字识别
- LabVIEW编程LabVIEW开发雷尼绍光栅尺Renishaw DX10表例程与相关资料
- 电子教室系统软件有哪些教学功能,我做了以下分类
- c语言建立坐标的代码,C语言 getx()用法及代码示例
- 网络优化-HttpDns
- 2022年高教社杯国赛赛题浅评