还有比 winapi 更丑的 api 吗?

2019-03-25 09:36:53 +08:00
 zycpp
迫生,在 Windows 上做 c 艹开发,被 winapi 折磨的死去活来,好奇还有比这更烂更丑的 API 吗?
开发语言不限…
想开个眼界
8528 次点击
所在节点    程序员
57 条回复
Alexinder
2019-03-25 10:41:42 +08:00
arcgis 不过好像不丑
anyele
2019-03-25 10:42:57 +08:00
@abelmakihara #17 在学校学 Java 我是被 Eclipse 和 XML 劝退的, 因为有 VS 先入为主, 觉得 Eclipse 是什么辣鸡玩意,直到后面接触了 IDEA 才算是入了 Java 的坑。 当时还背过从 WinMain 函数,注册窗口,创建窗口,消息循环函数这一堆流程和代码
tabris17
2019-03-25 10:44:25 +08:00
windows API 是有历史包袱的,毕竟是从 win1.0 时代继承的祖传接口。能维护成这样已经非常不容易了
zycpp
2019-03-25 10:45:18 +08:00
@tomychen
_Check_return_ WINOLEAPI
CoInitializeSecurity(
_In_opt_ PSECURITY_DESCRIPTOR pSecDesc,
_In_ LONG cAuthSvc,
_In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE* asAuthSvc,
_In_opt_ void* pReserved1,
_In_ DWORD dwAuthnLevel,
_In_ DWORD dwImpLevel,
_In_opt_ void* pAuthList,
_In_ DWORD dwCapabilities,
_In_opt_ void* pReserved3
);

(手动狗头
widewing
2019-03-25 11:08:21 +08:00
@zycpp 这不写的挺好的吗?你是想说那些宏吗?
ArchVile
2019-03-25 11:09:38 +08:00
Windows Api 的文档微软算是做的很不错的了。
tomychen
2019-03-25 11:15:13 +08:00
@zycpp
你这是要对比 stl 还是要对比 objc?
老实说 WINAPI 相比众多 API 而言,已经算是很友好了,至少从命名上已经能估到作用,再加上 MSDN,也算是对 dever 相对友好了吧

君不如埋头看看 Obj-c 的 API 和文档,知足吧。
kristpan
2019-03-25 11:23:14 +08:00
@ZavierXu 我觉得 Unix 的 API 相当优雅呀
GeruzoniAnsasu
2019-03-25 11:45:05 +08:00
@kristpan
unix:
fork + execl, execlp, execle, execv, execvp, execvp, execve

win:
CreateProcess

手动狗头
cjw1115
2019-03-25 11:55:28 +08:00
@zycpp 这 API 有设计上的问题,但更多的问题在于你不了解 COM 吧
tcjj3
2019-03-25 12:04:24 +08:00
@whoami9894 抱歉失误了,刚开始是想到汇编,汇编其中的中断和 API 的用法相似,没去了解清楚 API 的概念扯到了二进制
zhuangzhuang1988
2019-03-25 12:12:36 +08:00
@zycpp _In_ 这些是用来做提示和静态分析的,可以自动找 bug
leonard916
2019-03-25 12:26:54 +08:00
tx 的 api 不是最醜的 api 嗎?
macha
2019-03-25 12:40:23 +08:00
习惯就好,你要想到这个是 C 风格的,而且能做到向前兼容的那么好,已经很不容易了。
nicevar
2019-03-25 12:43:05 +08:00
要是 windows api 算丑的话,那应该没有好看的,windows 表示不是针对谁,都是乐色
mooncakejs
2019-03-25 12:56:15 +08:00
windows api  已经是非常好的 API 了。除了一些无法避免的历史包袱,但是横向对比,没有比它更好的。
prolic
2019-03-25 13:28:45 +08:00
毕竟是上古时期的产物,设计风格肯定和现在不一样
bbxiong
2019-03-25 14:11:11 +08:00
windows api 纯 C 的很清晰,一点也不丑
AX5N
2019-03-25 14:13:16 +08:00
我觉得蛮好看的
kristpan
2019-03-25 14:18:45 +08:00
@GeruzoniAnsasu Unix 本来就倾向于小巧的 api,如果你想把 fork 和 exce 合并在一起,可以用 system()嘛。CreateProcess 名称看起来确实爽,你看看它的参数列表吧:

BOOL CreateProcessA(
LPCSTR lpApplicationName,
LPSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCSTR lpCurrentDirectory,
LPSTARTUPINFOA lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/548154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX