C++/CLI 中的“_in_”和“_in_opt_”是啥意思?

Posted

技术标签:

【中文标题】C++/CLI 中的“_in_”和“_in_opt_”是啥意思?【英文标题】:What do "_in_" and "_in_opt_" mean in C++/CLI?C++/CLI 中的“_in_”和“_in_opt_”是什么意思? 【发布时间】:2013-05-28 17:50:41 【问题描述】:

我是 CLR 的新手,我正在阅读 setWindowPos 的 c++/CLI 文档,函数的定义是这样的。

BOOL WINAPI SetWindowPos(
  _In_      HWND hWnd,
  _In_opt_  HWND hWndInsertAfter,
  _In_      int X,
  _In_      int Y,
  _In_      int cx,
  _In_      int cy,
  _In_      UINT uFlags
);

我有 C++ 经验,所以我明白,例如,“HWND”是数据类型,“hWnd”是变量名。

但什么是“_in_”和“_in_opt_”?

我猜它们是“输入变量”之类的缩写。

文档中提到 hWndInsertAfter 是可选的。这是否意味着如果不需要,我可以在函数调用中简单地省略/不打扰将变量传递给此参数?

例如

SetWindowPos(this,0,0,GetSystemMetrics(SM_CXMAXIMIZED),GetSystemMetrics(SM_CYMAXIMIZED),SWP_NOZORDER);
//Note that we're one parameter short here (the second is missing)

(这会让我感到困惑,因为我在其他地方看到它写的 C++ 不支持可选参数。只有默认参数和重载)

【问题讨论】:

What is _In_ in C++?的可能重复 是的,我刚刚找到了这个类似的主题。我承认我最初的研究不够好,对不起。但是,我从这个问题中得到的答案与我的具体问题更相关。 【参考方案1】:

这是微软Source-Code Annotation Language 的一部分。 _In_Opt_ 表示你可以通过NULL

【讨论】:

非常感谢。现在我有了这些注解的名称(我最初认为它们是经过解释的,并且对编译器具有重要意义),我有了进一步研究的起点。 In_opt(opt 全部小写!)

以上是关于C++/CLI 中的“_in_”和“_in_opt_”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

PoEdu - Windows阶段班 Po学校Windows编程 Lesson004_003-2 文件操作

关于PsCreateSystemThread函数

RegistryCallback routine(CmRegisterCallback 注册表操作监控介绍)

windows 编程 之 问题解决笔记

api文档方法参数

CreateWindow