难点:下面几个都不是真正的核心,但也是拦路虎。虽然可以靠人工,但是,真的好麻烦。
1、子类型:void* 实现泛型。【大概率不干】
【C语言唯一实现泛型的方式,就是void * 空指针,就是不限类型,如果参数是void * ,那么就可以传入任意指针类型!】
- 还得考虑指针,不能直接忽略了!!
(1)可能解决方案:
出现void* 时,单独考虑,可以传入任意指针类型。
把指针类型单独考虑,至少在算法中通过 * 判断是不是指针类型。
(2)涉及的问题
1 考虑参数的泛型,是一定要求值的,你只有类型没有值,就算解决了,也没有用武之地。【除非考虑求值】
2 关系:subtype【其实忽略了也就不用管了】
subtype:子类型关系, 又称安全替代原则. 用于实现泛型。
S<:T表示类型S的元素是类型T的元素的子集, 一个需要T类型的上下文中,任何S类型都可以安全使用. 例如int<:float.子集关系?如何得来的?
void* 泛型实现方式: https://blog.csdn.net/ljianhui/article/details/18748657 https://www.runoob.com/w3cnote/c-general-function.html
2、对于跨文件的全局函数调用,如何找到所有include文件,这很难。【有时间得弄下】
如果不实现,就无法通过include判断是否可调用!
(1)可能解决方法:
1 需要写个跨文件搜索工具,实现类似编译器链接的过程!!!【生编估计也行,实在不行还要去学编译原理】
2 利用Linux本身的工具:内部命令vim,外部命令find,sed,grep,awk,perl。【可以尝试】
- 使用vim进行多文件查找和替换的方法:https://www.cnblogs.com/thrillerz/p/5559862.html
在linux平台上,有很多优秀的shell命令组合来做多文件查找/替换,比如这些命令:find,sed,grep,awk,perl。
但其他平台比如windows上就没那么方便了,这时候vim内置的多文件查找命令就有用武之地了,虽然比起外部命令来稍微慢了一点。
3 人工,利用vscode全局搜索,或者看能不能导出结果
4 人工,利用bootlin搜索,看能不能导出结果
10、C语法问题
作者:西伯尔
出处:http://www.cnblogs.com/sybil-hxl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。