用 #define 实现的类似模板的东西

xili 2005-11-14 06:19:57

最近常看到用 #define 实现的类似模板的东西

例如:

#define _DECL_class(name, element )\
class df_##nm\
{\
protected:\
element *pData;\
int num;\
\
void _resize(int n);\
\
public:\
nm( ){};\
\
int Count() const { return num; }\
\};


_DECL_class( cls_example, int );


这个例子比较简单, 但现在俺常看到十分复杂的这种东西. 代码十分难读.


有没有一个工具 可以将 这些东西 展开到一个文件中?

...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xili 2005-11-14
  • 打赏
  • 举报
回复
呵呵,多谢. 俺用的是 cpp --help, 它太简单.

估计不会有问题了.结帖了.
nodummy 2005-11-14
  • 打赏
  • 举报
回复
连man都懒得看一下么?算了,多给你点东西吧……如果用的都是标准库的内容,下面的-I阿什么的都不要,只保留最后两个参数就可以了

cpp -I path_to_headers -include files_to_include in_filename out_filename
xili 2005-11-14
  • 打赏
  • 举报
回复
有点麻烦, 需要设置正确的 include 路径,不知道咋设置, 准备查文档, 哪位知道请告诉俺呀
xili 2005-11-14
  • 打赏
  • 举报
回复
gcc竟有这等好东西? 俺去试试.
nodummy 2005-11-14
  • 打赏
  • 举报
回复
什么叫像是?本来就是,只不过你说错了一点,这个是我现在的正甲,不是马甲。另外,估计你不知道“大米”这个词的来历……

另外说一句,cpp产生的文件里面还有点额外的东西,我上面贴的是把那些额外东西去掉以后的代码。
jixingzhong 2005-11-14
  • 打赏
  • 举报
回复
哎, 上面的 ...

一看就象是大米的 马甲 ...
jixingzhong 2005-11-14
  • 打赏
  • 举报
回复
一般上, 这种应用还是结构比较简单的时候用用,
如果结构复杂的话, 这样容易出问题 ...
nodummy 2005-11-14
  • 打赏
  • 举报
回复
这个连类型变化都不牵扯的东西也叫类似template?

对于gcc来说,cpp是独立于compiler和linker的,你可以试试看让cpp来直接进行展开

最简单的使用
#define MAGIC_NUM 1
#define SOMETHING_STRANGE
SOMETHING_STRANGE int main(void)
{
int val = MAGIC_NUM;
printf("%s\n", #adsf);
return 0;
}
产生的输出
int main(void)
{
int val = 1;
printf("%s\n", #adsf);
return 0;
}
jixingzhong 2005-11-14
  • 打赏
  • 举报
回复
都知道是类似模板的东西了, 还不简单 ?

本质上就是简单的替换了 ~
不过, 我是理解为 模板 多一点,
(虽然本质上差别很大,比如没有了类型的安全检查 ...)
K 2005-11-14
  • 打赏
  • 举报
回复
看多了就好了.只是简单的替换.
fflush 2005-11-14
  • 打赏
  • 举报
回复
有没有工具不是太清楚,不过现在写一个这样的工具也不会很复杂
1) 本套课程针对高校大学生系统学习C语言而录制,从0基础入门讲起,循序渐进,通俗易懂,同时适用于计算机系及非计算机系的同学。通过学习可以帮助大家掌握C语言本质,轻松面对C语言全国二级考试,并达到能独立完成中型C项目、C游戏的水平;2) 多数高校都开设了C语言课程,网上C语言课程也很多,但普遍存在两个问题: (1) 授课方式单一,大多是照着代码念一遍, 对刚刚接触编程的同学来说,感觉晦涩难懂 (2) 授课内容过度注重语法,没有项目实战支撑,造成课程枯燥无趣。本课程针对上述问题进行了改进 (1) 授课方式采用语法讲解+内存布局示意图+项目的方式,让课程生动有趣好理解 (2) 系统全面的讲解了C语言的核心技术点,还配套录制了《全国计算机二级C语言真题精讲》,让学员在掌握C语言编程的同时,还能轻松面对二级考试;3) 课程详细内容: 常量-变量、分支语句、循环语句、操作符和表达式、函数(库函数、自定义函数、递归调用 )、数组(一维数 组、二维数组、数组作为函数参数、指针数组)、指针(指针和指针类型、二级指针和多级指针、指针表达式解析、指针运算、数 组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运行环境、预定义符号、#define和#undef、宏和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、自定义类型(结构体、枚举 、联合)、动态内存管理、文件操作(i/o常量、i/o函数、流)。

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧