nik*_*hil 1 c variables conditional-statements custom-data-type
我想根据C中的条件声明变量的数据类型.有可能吗?
我已经编写了一个使用整数数组实现堆栈的程序,我希望使用相同的代码来实现堆栈的字符,这只不过是用"char"替换一些"int",那么如何做到这一点?
我喜欢这样的东西,
if(x == 1)
#define DATATYPE int
else
#define DATATYPE char
Run Code Online (Sandbox Code Playgroud)
还有很多其他的东西,但没有任何效果.
您的代码可以使用#if x==1... #endif如果x是预处理程序符号,例如,如果使用-Dx=1命令行选项进行编译gcc; 请理解C预处理器是C编译器的第一阶段,它实际上看到了预处理代码(例如gcc -C -E source.c > source.i用于进入source.i预处理形式source.c)
通常,您可以使用巨大的预处理器宏来实现此类通用容器.参见例如sglib和这个问题.或者您可以使用一些专门的源代码生成器生成您的C代码(可能使用其他预处理器,如m4或gpp,或者使用某种脚本语言制作您自己的生成器).
或者,使用大量void*指针,并将数据大小传递给您的例程,如qsort(3).参见例如Glib容器
您可能对学习C++ 11或Ocaml(甚至是Common Lisp)感兴趣.它们提供了一个带有几个通用容器的标准库(在C++ 中有库中的模板,在Ocaml中带有仿函数); 阅读有关通用编程的内容
| 归档时间: |
|
| 查看次数: |
1017 次 |
| 最近记录: |