【问题标题】:Where is WIN32 defined, and how can I include this definition in my project?WIN32 是在哪里定义的,如何在我的项目中包含这个定义?
【发布时间】:2011-07-02 02:26:36
【问题描述】:

我在我的项目中包含了第三方头文件和源文件。

在标题的顶部有这样的:

#if defined(WIN32) || defined(WIN16)
#ifndef MSDOS
#define MSDOS
#endif
#endif

#include <stdio.h>
#include <stdlib.h>
#ifndef MSDOS
#include <unistd.h>
#endif
#include "des.h"

问题是#if defined(WIN32) 失败并且在尝试#include unistd.h 时编译失败,我不想这样做。

我有与此头文件一起使用的第三方项目,即 WIN32 已定义并且它不会尝试包含在 Visual Studio 中,我在“WIN32”上做了“转到定义”,并在 WinDefs 中采用了以下定义。 h.

#define WIN32

我不确定这是从哪里获得 WIN32 定义的,因为第三方项目似乎不包含“WinDefs.h”。

所以我的问题是,如何在我当前的新项目中定义 WIN32?

【问题讨论】:

    标签: c++ visual-studio-2010


    【解决方案1】:

    在编译器中定义了一些WIN32。就这样,如果你用gcc for windows,就定义了WIN32。如果您使用 gcc for linux ,则未定义 WIN32 :)
    所以,宏是一个开关。您可以将其定义为使用某些东西,而不是将其定义为不使用某些东西。

    【讨论】:

      【解决方案2】:

      对于那些寻求答案的人

      WIN32在哪里定义

      部分问题,我发现它定义在:

      minwindef.h

      ole2.h

      请注意,我不相信这些是唯一定义的地方。我预计可能还有其他文件定义了它。不过,我认为这可能会对某些人有所帮助。

      【讨论】:

        【解决方案3】:

        检查您的包含。我猜想在 windows.h 之前包含第三方标头。所以,在你的 main.cpp 或等于它应该是

        #include <windows.h> // this will also include windefs.h
        #include <thirdParty.h>
        

        而不是相反。

        希望对您有所帮助。

        【讨论】:

          【解决方案4】:

          您可以在包含第三方头文件之前简单地包含 windows 头文件 (windows.h) - 因为您已经发现 WIN32 在那里定义但技术上它可以在任何地方定义(所以如果第三方项目不包括windows头文件检查它是否直接在编译器项目设置中定义)。

          顺便说一句,还有一个由编译器设置的 _WIN32 定义,如果检查代码是否在 windows 下编译,最好查找这个定义;

          【讨论】:

            【解决方案5】:

            Visual Studio 具有内置定义_WIN32。 mingw-gcc 内置了 WIN32 和 _WIN32,因此该项目很可能使用 gcc 进行了测试。您可以添加

            
            #if defined(_WIN32) && !defined(WIN32)
            #define WIN32
            #endif
            

            或者只是将 -DWIN32 添加到 CFLAGS。

            【讨论】:

              【解决方案6】:

              取决于您的项目设置。 WIN32 是在 windows 头文件中定义的,但您也可以将其传递给编译器(例如 gcc 的“-DWIN32”)。试试看能不能编译。

              【讨论】:

              • 在 Visual Studio 中,您可以通过“额外预处理器指令”中的项目属性或其他内容输入。
              • 这对我有帮助!谢谢!该属性称为“预处理器定义”,WIN32 必须在其中(对于 WIN32 项目)。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-05-10
              • 1970-01-01
              • 2016-11-12
              • 1970-01-01
              • 1970-01-01
              • 2015-02-27
              • 2012-05-02
              相关资源
              最近更新 更多