我发现自己最近在Win32上做了更多的C/C++代码,并且来自C#背景我已经开发出一种完全一致的“干净代码”的痴迷,所以从美丽的System.*命名空间转回到构成Win32 API头文件的#defines的混搭是一种文化冲击.
在阅读了MSDN按字母顺序排列的Win32核心函数列表之后,我意识到Win32的API设计实际上是多么简单,不幸的是它被过去25年的所有瑕疵笼罩着,包括许多对16位编程的引用,这些编程在今天完全无关紧要64位世界.
我很快就会开始一个新的C/C++项目,我正在考虑如何根据需要重新创建Win32的头文件.我可以将它设计得很漂亮,但它会保持与现有程序的100%二进制(和源)兼容性(因为#defines最终解决了同样的问题).
我想知道过去是否有人尝试过这种方法(Google没有提出任何建议),或者是否有人想要劝阻我.
我想到的另一件事是,如何使用更干净的C Win32 API,可以在顶部设计更干净,更易于使用的C Win32 API包装器,因为旧的C Win32项目不会有任何命名空间污染.
编辑:
只是为了澄清,我不是为了提高编译性能或任何类型的优化,我完全清楚编译器会废弃所有未使用的东西.我在这里的任务是拥有一个很高兴使用的Win32头库(因为我不需要每次使用函数时都按下Caps-lock).
不要这样做.
这可能是可能的,但这需要很长时间,并可能导致微妙的错误.
然而,更重要的是,它将使你的程序完全不可能为你以外的任何人维护.