⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preprocessor.h

📁 预处理宏工具
💻 H
字号:
//##############################################################################
// preprocessor.h
// The dnc Module
// Copyright (c) Dreamsoft Mark Zhao
// Create Date:2007-3-16 19:26:16
//##############################################################################
#ifndef __DNC_PREPROCESSOR_H__
#define __DNC_PREPROCESSOR_H__
#include "pp_bool.h"
#include "pp_repeat.h"
#include "pp_inc.h"

// dnc_pp_iif(bit, t, f)
// 如果bit == 0;输出 f
// 如果bit == 1;输出 t
// 否则没有定义
# define dnc_pp_iif(bit, t, f) dnc_pp_iif_i(bit, t, f)
# define dnc_pp_iif_i(bit, t, f) dnc_pp_iif_ii(dnc_pp_iif_ ## bit(t, f))
# define dnc_pp_iif_ii(id) id
#
# define dnc_pp_iif_0(t, f) f
# define dnc_pp_iif_1(t, f) t

// dnc_pp_if(cond, t, f)
// 输入0<=cond<=256;如果cond>0输出t;否则输出f
#define dnc_pp_if(cond, t, f) dnc_pp_if_i(cond, t, f)
#define dnc_pp_if_i(cond, t, f) dnc_pp_iif(dnc_pp_bool(cond), t, f)

// dnc_pp_comma_if(cond)
// 输入0<=cond<=256;如果cond>0输出',';否则输出空符号
#define dnc_pp_comma_if(cond) dnc_pp_comma_if_i(dnc_pp_bool(cond))
#define dnc_pp_comma_if_i(bit) dnc_pp_comma_if_ii(bit) 
#define dnc_pp_comma_if_ii(bit) dnc_pp_comma_if_##bit
#define dnc_pp_comma_if_0 
#define dnc_pp_comma_if_1 ,

// dnc_pp_enum_params_m
#define dnc_pp_enum_params_m(n, param)dnc_pp_enum_params_mm(dnc_pp_comma_if(n),param ## n)
#define dnc_pp_enum_params_mm(n, param) n param

// dnc_pp_enum_params(count, param)
// 生n个用','号连接的符号,例如:dnc_pp_enum_params(3,a)会产生:
// a0,a1,a2
#define dnc_pp_enum_params(count, param) dnc_pp_enum_params_i(count,param)
#define dnc_pp_enum_params_i(count, param) dnc_pp_repeat_##count(dnc_pp_enum_params_m, param)

/**
 *  Convert symbol to string constant.
 */
#define dnc_pp_tostring(symbol) dnc_pp_tostring_i(symbol)
#define dnc_pp_tostring_i(symbol) #symbol

/**
 *  Use to client select a just library.
 */
#define dnc_pp_sellib(moduleName,version) dnc_pp_sellib_i(moduleName,version,DNC_COMPILER,DNC_DEBUG)
#define dnc_pp_sellib_i(moduleName,version,compiler,debug) \
dnc_pp_tostring(moduleName)"-"dnc_pp_tostring(version)"-"dnc_pp_tostring(compiler)dnc_pp_tostring(debug)


#endif //__DNC_PREPROCESSOR_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -