java define 宏_宏定义&宏函数(日志输出)define
发布日期:2021-06-24 13:48:25 浏览次数:2 分类:技术文章

本文共 949 字,大约阅读时间需要 3 分钟。

最常见的就是

#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的定义,又引用了第一个定义,相当于替换了两次

转载地址:https://blog.csdn.net/weixin_33245447/article/details/114121164 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java 水印处理_使用java技术,批量进行图片水印处理
下一篇:java like a_java辨析(3) :is a 和 like a

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月02日 02时31分23秒