int
WINAPI
MessageBoxA(
    __in_opt HWND hWnd,
    __in_opt LPCSTR lpText,
    __in_opt LPCSTR lpCaption,
    __in UINT uType);我F12追踪到他们的定义,都是宏,看到最后,发现是#define __allowed(p) __$allowed_##p
这个有什么意义啊???
#define 中##的用法我知道,可是__$。这个是干嘛的啊!!?
不就是简单的参数吗?为什么需要这么复杂呢!!好稀奇古怪啊!!!
求高人解答

解决方案 »

  1.   


    // The helper annotations are only understood by the compiler version used by various
    // defect detection tools. When the regular compiler is running, they are defined into
    // nothing, and do not affect the compiled code.
    http://bbs.csdn.net/topics/360085670http://msdn.microsoft.com/en-us/library/aa383701%28v=vs.85%29.aspx
      

  2.   

    __in_opt 输入参数, 返回后不会改变其值
      

  3.   

    有这样的宏:
    #define __$allowed_xxx$只是个符号,没有什么特别意思,没有规定宏的名字不可以有$
      

  4.   

        Microsoft源代码注释语言(SAL)提供设置批注可以使用描述的功能如何使用其参数,它对其假设并确保它使其在完成。 批注可标头文件 <sal.h>定义。 Visual Studio C++的代码分析使用SAL注释修改函数进行分析。 有关Windows驱动程序开发的SAL 2.0的更多信息,请参见 联机SAL Windows驱动程序的2.0批注。    本身,C和C++为开发人员提供仅限一种一致地快速用途以及不变性。 使用SAL注释,可以更详细地描述您的功能,以便使用它们的开发人员可以更好地了解如何使用它们。在MSDN中去查看SAL 里面有详解。