尝试将以下代码放入c ++标头中

sdd*_*208 -2 c++ header

我正在努力将一个类似的代码串放入一个头文件中,以便多个.cpp文件可以使用bool.将此添加到我的程序后我遇到了问题并希望得到一些帮助.

这是代码:

BOOL IsUserAdmin(VOID)
{
    BOOL b;
    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    PSID AdministratorsGroup; 
    b = AllocateAndInitializeSid(
            &NtAuthority,
            2,
            SECURITY_BUILTIN_DOMAIN_RID,
            DOMAIN_ALIAS_RID_ADMINS,
            0, 0, 0, 0, 0, 0,
            &AdministratorsGroup); 
    if(b) 
    {
        if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) 
        {
            b = FALSE;
        } 
    FreeSid(AdministratorsGroup); 
    }

return(b);
}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

seh*_*ehe 9

函数定义不属于标题,因为它自然会导致多重定义的符号.

可以使用它打击这个

  • static- 标记函数声明+定义,static使其成为TU的本地(翻译单元,即cpp文件)
  • static inline
  • 匿名命名空间.
    通过unnames命名空间包含它,如下所示:namespace { /*function definition*/ }也使它成为TU的本地
  • (hackishly)使它成为一个功能模板

但是,除非有好处,否则我不建议这样做.你必须开始担心ODR(单一定义规则),因为你不得不问这个问题,我会假设这有点超出了你的语言经验.