为 Windows 7 定义预处理器指令

Posted

技术标签:

【中文标题】为 Windows 7 定义预处理器指令【英文标题】:Defining a preprocessor directive for windows 7 【发布时间】:2012-08-21 09:37:12 【问题描述】:

我正在使用 SetDllDirectory() 并想知道如何为 Windows 7 HP 64 位定义一个指令,我在想这样的事情:

在预处理器指令中:

 Add WIN7

在 .cpp 中,我想添加类似

的内容
#ifndef WIN7<- where the function is used
SetDllDirectory();
#endif

但只要我添加语句,SetDllDirectory 就会被注释掉。

这是我尝试过的,我在预处理器定义中添加了 WIN7 并添加了:

#if defined(__WIN7__)
if (regkeyExists) 
    if (regkey->HasValue("LibPath")) 
        regkey->QueryValue("LibPath", value);
        if (!value.empty()) 
            wxSetEnv("ABCLib", value);
            SetDllDirectory(value.c_str());
        
    


SetDllDirectory("C:\\Program Files\\ABC\\ABCProject\\lib");
#endif

这是声明windows 7的权利吗

谢谢

【问题讨论】:

SetDllDirectory becomes commented. 你到底是什么意思 SetDllDirectory() 不存在了,其实我是在代码里面使用#语句 【参考方案1】:

您不想定义自己的宏来检测 Windows 7,请使用 ones provided by Microsoft - 将您的仅限 Win7 的代码包装在:

#ifdef _WIN32_WINNT_WIN7 
xyz()
#endif

如果您创建自己的,则必须在要为 Windows 7 编译时定义它,似乎您隐藏了 SelDllDirectory() 函数 - #ifndef 表示“如果未定义”,因此如果 WIN7 宏没有在任何地方定义,然后您就可以获得该功能。

【讨论】:

我已经尝试过这个东西,正如你所说的将代码放在 ifdef 中是否意味着将整个源文件放入其中? @LindaHarrison - 您需要 C 预处理器的初学者指南。 eskimo.com/~scs/cclass/notes/sx9c.html【参考方案2】:

NTDDI_VERSION or _WIN32_WINNT怎么样?

【讨论】:

以上是关于为 Windows 7 定义预处理器指令的主要内容,如果未能解决你的问题,请参考以下文章

预处理器指令

您可以为 C# 版本添加预处理器指令吗?

笔记3:预处理器-宏定义

如何使用预处理器指令检查操作系统版本(Windows)?

Objective-C 预处理器指令

预处理器指令#error: 'DEBUG 已定义'