当前位置:  开发笔记 > 编程语言 > 正文

#ifdef _WIN32未被检测到

如何解决《#ifdef_WIN32未被检测到》经验,为你挑选了1个好方法。

我不能让#ifdef规则至少在Windows(64位)上工作.编译器版本是g ++ 5.4.0我试过:

#ifdef _WIN32
#ifdef _WIN64
#ifdef OS_WINDOWS

我用以下代码编译了以下测试:g ++ main.cpp

即使使用简单的代码:

#include 

int main()
{
  std::cout << "you are on...";

  #ifdef _WIN32
  std::cout << "Windows" << std::endl;
  #elif __linux__
  std::cout << "Linux" << std::endl;
  #endif

  return 0;
}

输出是:

"you are on..."

......没有其他任何东西得到满足.



1> eerorika..:
#ifdef _WIN32
#ifdef _WIN64

这些是由MSVC编译器定义的预定义宏.您似乎正在使用g++.这可能意味着MinGW或Cygwin.


这里和这里是几个编译器预定义的宏集合.

MinGW的 __MINGW32__

Cygwin的 __CYGWIN__


如果你不想构建大量ifdef - else树,并在互联网上搜索由晦涩的编译器定义的宏,以及它们的不同版本,我建议改为包含一些来自boost的头文件.他们已经完成了艰苦的工作.虽然,请注意与之BOOST_OS_WINDOWS分开BOOST_OS_CYGWIN.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有