什么是 metaprogramming
概念
write a program programing for you ,that's call metaprogramming.
写一个程序,让它帮你写程序
需求
计算20
以内的斐波那契数列
动态计算
#include <stdio.h>
int fib(int n){if (!n) return n;int a = 0,b = 1, c;for(int i = 1; i < n; i++) {c = a + b;a = b;b = c;}return b;
}
int main() {printf("%d\n", fib(4));
}
提前计算
// fib_calc.cpp
#include <stdio.h>
int fib(int n){if (!n) return n;int a = 0,b = 1, c;for(int i = 1; i < n; i++) {c = a + b;a = b;b = c;}return b;
}
int main() {printf("int fib_array[] = {\n");for (int i = 0 ; i <= 30; i++)printf("%d,\n", fib(i));printf("};\n");
}
将输出结果存入数组,然后到处到头文件再
include
。
这里的fib_calc.cpp
文件就是metaprogramming
; 这种需求很常见;静态编译语言也就集成到自己的编程标准中;如C++ template
;
C++
则做了很多的优化,更加的完善;
什么是 metaprogramming相关推荐
- Ruby Metaprogramming
Ruby使用者对attr_accessor一定不会陌生. class Aattr_accessor :num end 等效于: class Adef num@numenddef =(value)@nu ...
- 周末话题-元编程(metaprogramming)
在计算机行业永远不缺乏的是什么? 概念和新名词 我们已经见了太多太多的名词,现在都有点名词麻痹症了.就在这些名词中间有一个单词忽隐忽现的闪烁着自己的光芒----meta. 在牛津大辞典里对meta这样 ...
- Template Metaprogramming
Template Metaprogramming 1. 何谓 Metaprogramming? Metaprogram: program that manipulates another progr ...
- practical c++ metaprogramming(翻译及学习)
前言 感兴趣的推荐看原文吧,我这里只是学习记录,价值一般,就是做个记录 https://www.researchgate.net/publication/323994820_Practical_C_M ...
- Ruby元编程技术(Ruby Metaprogramming techniques)
我最近考虑了很多元编程(Metaprogramming)的问题,并希望看到更多这方面技术的例子和讲解.无论好坏,元编程已经进入Ruby社区,并成为完成各种任务和简化代码的标准方式.既然找不到这类资源, ...
- Python中的元编程(Meta-Programming)
元编程:是编写出可以操作的代码的行为,即用代码来操作另一个代码. Python中的元编程:一种构建函数和类的行为,这些函数和类可以通过修改.包装现有代码或生成代码来进行操纵. Python中元学习的实 ...
- metaprogramming笔记
动态多态与静态多态 动态多态:允许我们通过单个基类指针或引用处理多个派生类型的对象. 模板元编程中强调静态多态,允许不同类型的对象以同样的方式被操纵,只要它们支持某种共通的语法即可. 动态多态,连同& ...
- Agile DSL Development in Ruby 笔记
pdf见:http://obiefernandez.com/presentations/obie_fernandez-agile_dsl_development_in_ruby.pdf 1. What ...
- Rust 1.30带来更多元编程支持,并改进了模块系统
Rust的最新版本1.30扩展了过程宏,允许它们定义新的属性和类似于函数的宏.此外,它简化了Rust模块系统,使其更加一致.直观. Rust 1.30引入了两种新类型的过程宏,"类属性的过程 ...
最新文章
- R语言可视化学习笔记之相关矩阵可视化包ggcorrplot
- 2017-5-17 分析文本
- PHPcms 把盛大登陆换成人人网登陆
- 水光半导体于2017 CES展示全方位通讯网络、多媒体及消费性电子芯片解决方案
- 【原】win 7 屏幕旋转问题的解决
- CAShapeLayer把图片做成圆形效果
- 大话数据结构——烂笔头
- 朴素贝叶斯详解及其python实现
- 盘点≠走过场,哪些功能可以进行高效库存盘点?
- 为什么说中小学编程教育是创新思维体操
- 介绍 json_介绍
- 锐龙R3 4300U和i5-9300H 哪个好
- 请教统计对应表字段为空的字段数
- V831——车牌识别
- 基于stm32人体健康监测系统
- ios swiftui_ios swiftui中的本地化
- 为什么不敢和别人竞争_为什么你很难交到朋友?可能是因为你不敢信任他人
- java学习--容器(1)
- [NC207040]丢手绢
- 简历中的自我评价怎么写?
热门文章
- 《RCLane:Relay Chain Prediction for Lane Detection》论文笔记
- 基于Oneplus 7 Pro的Flyme9&MIUI12.5刷机教程
- Javaweb学习第三天,CSS(知识点来自广陵散老师总结)
- 启发式搜索(Informed Search)-贪婪算法GBS+A*算法
- SAS统计初学1-卡方检验
- 8,verilog基本逻辑运算
- 现代数据环境下,如何做数据集成?这11个靠谱实践收藏了
- ipad已有2周未备份。ipad插入电源、被锁定且接入Wi-Fi时会进行备份
- 【学习 · 求职必备】学CV必须关注的会议与期刊
- 计算机培训研修心语,学子榜样 | 2018级国家励志奖学金程春旭:不忘初心,砥砺前行...