Abusing the C preprocessor
在这里Abusing the C preprocessor(http://psomas.wordpress.com/tag/preprocessor/)看到这个C语言宏的使用技巧。把示意代码拷贝出来,稍加修改可以在VS下编译。
至于其中的原理我就不说了,XX后看原文吧。
void foo_1(int x){ printf("foo_1 %d\n",x); }
void foo_2(int x,int y){ printf("foo_2 %d %d\n",x,y); }
#define PASTE(a, b) a ## b
#define PASTE2(a, b) PASTE(a, b)
#define NARG_(_9, _8, _7, _6, _5, _4, _3, _2, _1, n, ...) n
#define NARG(...) NARG_(__VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define foo1(...) foo_1(__VA_ARGS__)
#define foo2(...) foo_2(__VA_ARGS__)
#define foo(...) PASTE2(foo, NARG(__VA_ARGS__)(__VA_ARGS__))
int main(void){
foo(32);
foo(12,23);
return 0;
}
转载于:https://www.cnblogs.com/aoaoblogs/archive/2011/11/29/2267034.html
Abusing the C preprocessor相关推荐
- DX11 preprocessor Dynamic shader linkage
(参照例子DXSDK sample:DynamicShaderLinkage11) 一.preprocessor 实现shader静态分支的经典方法,代码示例如下 shader中(如果显卡不支持DX1 ...
- vs2015 Preprocessor
vs2015 Preprocessor 其实就是预处理器 预处理器定义:USE_MKL c++处理代码: #ifdef USE_MKL #endif // USE_MKL
- 16道嵌入式C语言面试题(经典) 预处理器(Preprocessor)
16道嵌入式C语言面试题(经典) 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_ ...
- MySQL语法解析和预处理(Parser Preprocessor)
我们没有使用缓存的话,就会跳过缓存的模块,下一步我们要做什么呢? OK,这里我会有一个疑问,为什么我的一条SQL 语句能够被识别呢?假如我随便执行一个字符串penyuyan,服务器报了一个1064 的 ...
- preprocessor预处理器
preprocessor 英 [priː'prəʊsesə(r)] 美 [priː'proʊsesə(r)] n.预处理程序:预处理器 转载于:https://www.cnblogs.com/marr ...
- 01Hypertext Preprocessor
Hypertext Preprocessor PHP即Hypertext Preprocessor是一种被广泛使用的开放源代码多用途动态交互性站点的强有力的服务器端脚本语言尤其适用于 Web开发人员可 ...
- 【Oracle】11g外部表指定oracle_datapump引擎,不能使用preprocessor预处理子句。
oracle 11g官方文档解释如下: 意思是:如果想用预处理特性,必须把preprocessor子句放在access parameters里面,并且指定oracle_loader引擎.
- Predefined Shader preprocessor macros //预定义的着色器预处理宏
Predefined Shader preprocessor macros 预定义的着色器预处理宏 Unity defines several preprocessor macros when com ...
- Jmeter——BeanShell PreProcessor的用法
一.什么是BeanShell BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命 ...
最新文章
- 用自定义方法,传入成绩数组,实现输出考试成绩的成三名
- WEB安全,SQL注入漏洞的加固代码汇总
- 浅谈RPA 在银行领域的十个场景应用
- Android Studio 更新失败解决方法
- 判断两个时间在15分钟内_为什么敷面膜的使用时间要15—20分钟,这个时间怎么算出来的?...
- pygame从入门到提高(2)-平铺背景
- 小技巧:让linux程序在后台运行
- 恶意造谣水滴筹的违法分子已被警方依法处理
- Python(2.7)-元组(tuple)
- C++ 无限for循环的bug
- Golang map的底层实现
- Heap:Sunscreen(POJ 3614)
- LA 3713 Astronauts 2-SAT问题
- favicon.ico介绍,网页图标的制作动态网页图标
- QT 无边窗口圆角实现
- java 微信提现(复制即用)
- 一台机子上运行多个mysql实例
- 逐梦....圈圈圈圈圈
- “希希敬敬对”队软件工程第九次作业-beta冲刺第七次随笔
- BAT批处理让文件夹里的文件单个或多个依次移动到另外一个文件夹
热门文章
- GB50016计算机房设计规定,建筑设计防火规范 [附条文说明] GB50016-2014
- 2020张宇1000题【好题收集】【第三章:一元函数积分学】
- iOS UITableView下拉刷新上拉加载更多EGOTableViewPullRefresh类库使用初级剑侠篇(欢迎提建议和分享遇到的问题)
- 学完物联网有哪些就业方向?
- 2021年中国民爆行业企业经营情况及主要产品产销量分析:工业雷管、工业炸药产销量均有所下滑[图]
- 计算机右侧不显示桌面,电脑桌面的右下角不显示移动设备的图标怎么办?
- 【Proteus仿真】【51单片机】自动浇花灌溉系统设计
- android 传统蓝牙Bluetooth联通性
- matlab strel函数用法
- 中南民大选课必备指南 | 内附选课脚本