C语言的宏macro的使用】的更多相关文章

C's Macro Introduction 1.The Connect Macros: ## 这是一个预处理连接符,这个操作符主要用来将两个符号连接成为一个完整的宏符号.通过下面的代码,可以看到其具体的使用方法: 如下例子: #include <stdio.h> struct macro { int N; char M; }; struct macro macro_drv = {100,20}; #define XNAME(n) x##n #define Macro(x) x##_drv.N…
[易学易懂系列|rustlang语言|零基础|快速入门|(22)|宏Macro] 实用知识 宏Macro 我们今天来讲讲Rust中强大的宏Macro. Rust的宏macro是实现元编程的强大工具. 宏主要作用为: 1.减少重复代码. 2.编写DSL(Domain-specific languages. 3.可变参数接口定义. 在Rust主要分两种宏: 声明式宏declarative macros (一般用macro_rules!定义) 过程式宏 procedural macros,像一个过程函…
scheme里的宏不同的实现有不同的写法: 1.mzscheme的define-macro (mzscheme也就是pltschme,也就是drracket,没有define-macro这个关键字) 语法:(define-macro   macro-name (lambda  macro-args) macro-body   ......) 例如:定义when (define-macro   when (lambda    (test .   branch) `(if    ,test (beg…
C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总结了一下讨论,加上自己的理解,do{...}while(0)的价值主要体现在: 1. 增加代码的适应性 下面的宏定义没有使用do{...}while(0) #define FOO(x) foo(x); bar(x); 这样宏定义,单独调用不会出现问题,例如: FOO(100) 宏扩展后变成: 1 f…
宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有宏定义的概念的.而变量在运行时要为其分配内存. 3 宏定义不可以被赋值,即其值一旦定义不可修改,而变量在运行过程中可以被修改. 4 宏定义只有在定义所在文件,或引用所在文件的其它文件中使用. 而全局变量可以在工程所有文件中使用,只要再使用前加一个声明就可以了.换句话说,宏定义不支持extern. 在…
宏是Jinja2特有的,像Django则没有这个. 先新建一个项目macroDemo: 然后在templates文件夹中新建index.html文件,并在代码中返回渲染后的文件: 然后回到index.html,现在假设我们要写一个登录的表单: 代码: <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>宏<…
注解是建立在class文件基础上的东西,同C语言的宏有异曲同工的效果 https://www.cnblogs.com/deman/p/5519901.html @是java注解,即annotation. 1可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件. 2Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用 3要先学习java的反射机制,然后再来理解…
宏 对宏(macro)的理解: 把它看作 Jinja2 中的一个函数,它会返回一个模板或者 HTML 字符串 为了避免反复地编写同样的模板代码,出现代码冗余,可以把他们写成函数以进行重用 需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重复 定义宏 {% macro input(name,value='',type='text') %} <input type="{{type}}" name="{{name}}" value=&q…
宏在C语言中经常使用,在linux的源码中可以看到很多宏的高级应用.因此不理解宏,就很难理解代码.本文参考一些互联网资料做一些总结,希望给大家带来帮助. 先说说使用宏的优点及缺点: 优点: 1.提高代码的可维护性:使用宏定义常量,在改常量值需要修改的时候,只需要改常量定义的地方即可. 2.提高代码的可读性:代码中有意义的名称比魔数跟具有可读性也更好理解. 缺点: 1.难以扩展:当宏变得复杂的时候,修改起来非常困难. 2.难以调试:很多调试工具,都难以跟踪到宏的内部代码. 宏的一些特点: 1.宏从…
特殊符号#.## (1)# When you put a # before an argument in a preprocessor  macro, the preprocessor turns that argument into a character array.  在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 简化理解:#是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串 #define ERROR_LOG(module) fprint…