【问题标题】:How to use the MSDN [closed]如何使用 MSDN [关闭]
【发布时间】:2019-01-16 21:48:32
【问题描述】:

这似乎是一个愚蠢的问题,但文档要么不好,要么我遗漏了一些我没有读过的东西。每次我参考 MSDN 的 c++ 相关问题时,我总是很困惑。就像 SetComputerName 函数一样。我查了 MSDN 并且不知道如何使用它,因为我完全一无所知。任何人都可以教我如何阅读这样的东西,如果你能用外行的方式解释它,我不太擅长 c++,谢谢!

BOOL WINAPI SetComputerName(
_In_ LPCTSTR lpComputerName
);

【问题讨论】:

  • 你调用它,传入新的计算机名。它返回一个 BOOL 来指示它是否成功。
  • @KenWhite 你能向我解释一下 WINAPI 之类的东西,或者 IN 或 LPCTSTR 甚至 LPComputerName 有点想习惯自己使用它不想要这样的解释
  • 这个问题对于这个网站来说范围太广了。您要求获得有关基本 C 编程、WinAPI 数据类型和 WinAPI 文档阅读的教程。当有整本专门针对该主题的书籍时,我们不会编写教程。您可能会看看能否在 Amazon 或 eBay 上找到 Charles Petzold 的早期书籍之一。在开始尝试直接使用 API 之前,您需要更加精通基础知识,尤其是那些具有永久影响的 API。
  • 他的意思是绝大多数 WinAPI 是用 C 编写的,而不是 C++,它们不是同一种语言,就像猫和胡萝卜一样,因为它们都是以ca.

标签: c++ msdn


【解决方案1】:

这里有一些宏,主要是出于历史原因,以及参数的类型和名称

BOOL WINAPI SetComputerName(
_In_ LPCTSTR lpComputerName
);

BOOL 用于布尔值,因为 C 在 1999 年之前没有标准化的 bool 类型,而且 Windows API 比这更早,请参阅 Why does microsoft use so many macros in their C++ code?

WINAPI 用于使用调用约定标记 Windows API 函数,请参阅 What does "WINAPI" in main function mean? 。通常这对你无关紧要,只对你的编译器。

LPTCSTR 表示“指向 const TCHAR 字符串的长指针”。见LPCSTR, LPCTSTR and LPTSTRTCHAR 是另一个宏,它可以是单字节字符,也可以是宽字符,具体取决于编译时选项。这个需要注意,因为它是参数的类型。

_In_ 将参数标记为函数的输入,而不是指向存储结果。这有时是有用的文档,也是代码分析的提示。见What is _In_ in C++?

lpComputerName 'lp' 是 Microsoft 匈牙利语符号,表示包含计算机名称的新值的“长指针”。

“长指针”是对旧内存模型的引用,其中您有 16 位指针和 32 位“长指针”,现在所有指针都是 32 位或 64 位,具体取决于编译器选项。

历史上,P 代表“指针”,LP 代表“长指针”。 长指针(也称为远指针)是 16 位的保留 Windows,当需要它们来寻址超出范围的内存范围时 当前段。保留了 LP 前缀以使其更易于移植 16 位代码到 32 位 Windows。今天没有区别——一个 指针是一个指针。 - Windows Coding Conventions

【讨论】:

  • 天哪,我们这个行业需要更多像你这样的人。支持我的男人!还有你怎么知道在 LPCSTR 中放什么?
  • @JacobSator 如果您在编译器选项中定义了 UNICODE,那么它是一个宽字符 C 字符串,否则它是一个单字节字符 C 字符串,例如文字"My computer"。甚至还有一个宏可以让文字成为正确的类型,具体取决于选项,但我现在不记得了。
  • 另请注意,在搜索此站点/msdn 上的每个单词时,链接位于前几个结果中。
  • @PeteKirkham 我想是_T("My computer")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多