我可以在没有 C++(只有 C)的情况下学习 Win32 API 吗?

Posted

技术标签:

【中文标题】我可以在没有 C++(只有 C)的情况下学习 Win32 API 吗?【英文标题】:Can I learn the Win32 API without C++ (with only C)? 【发布时间】:2019-10-09 07:27:12 【问题描述】:

对于这个问题提出一个奇怪的问题,我很抱歉。我用谷歌搜索并在这里寻找解决方案,但没有一个答案能满足我真正想要的。

我真的对这个问题感到困惑。我学习安全工作已经快 2 年了。所以,我对 Python 和 C 有很好的了解。

我推荐的公司给了我学习 Win32 的建议。但是当我开始了解它时,我发现Win32 是基于 C++ 的。但我不想再浪费时间去研究它了。一些博客谈论 C/C++ 中的 Windows 编程,这让我更加困惑,因为我认为 C 和 C++ 本质上是相互独立的。

我的问题是:

    我可以只用 C 来学习 Win32 吗?

    如果不是,那我可以通过 C 来学习吗?

    如果是,我必须走多远(所以,它的所有上下文或具体情况)?

再次抱歉。我现在真的很困惑,我不知道我必须做什么。

【问题讨论】:

大多数 Win Api 是 C。有几个例外(例如 COM IFAIR)。 但几乎 MSDN 中的每个代码都说 C++.. @MarekR 所有的 COM API 都是 C 兼容的。 C/C++ 几乎不是分开的,C 可以被视为 C++ 的一个子集,而存在的差异是标准化委员会做得不好的结果。 “不想再浪费时间学习它” - 但是在 C 之后切换到 C++ 是必须的。 @VTT 说 C 的一半功能在 C++ 中不存在或工作方式不同,所以 C 绝对不是 C++ 的子集。 【参考方案1】:

据我所知 - 是的,这应该是可能的。较旧的 Windows API 实际上是基于 C 的,这就是我 20 年前自己学到的。他们很简单。较新的基于 COM,这在 C 中有点麻烦,但绝不是不可能的。我记得读过一些关于这样做的好教程(C 语言中的 COM),尽管恐怕我没有任何方便的链接可以提供。

也就是说,C 和 C++ 非常接近。事实上,C++ 最初旨在成为 C 的超集——每个有效的 C 程序都应该是有效的 C++ 程序。现在,他们并没有完全做到这一点,但差异是微妙的,在大多数情况下不应该打扰你。因此,您不妨继续用 C 编写代码,只使用一点 C++ 来与 COM 交互。 C++ 编译器应该接受这个就好了。

【讨论】:

这不是问题链接,我想我的主要问题是我可以用 C 来学习它。而 MSDN 中的代码说 C++ 可以用 C 编译器编译? C 和 C++ 密切相关。大多数 C 程序都可以编译为 C++,几乎不需要更改。

以上是关于我可以在没有 C++(只有 C)的情况下学习 Win32 API 吗?的主要内容,如果未能解决你的问题,请参考以下文章

由于没有学习过C++,只有C语言基础,在C++项目代码中看到如下定义,望高手解答。

mac系统下如何学习c++

如何在没有错误消息的情况下调试 ctypes

在c ++中拆分偶数字符串

在没有 Q_PROPERTY 定义的情况下从 C++ 访问 QML 对象的属性

可以在没有主体的情况下调用声明的函数