没有匹配的else以及变量未定义、编译重定义等问题

从linux环境下的工程,放到windows下,出现了很多问题,如题为其中一个问题。

1.上网查了一下,为中文注释惹的祸,将代码中所有中文注释去掉后(当然,也可以改成英文),解决了没有匹配的else等问题。

2.另外一个时间计数问题,采用了

Windows下直接使用gettimeofday函数
 

#include 
#ifdef _WIN32
#include 
#else
#include 
#endif
#ifdef _WIN32
int gettimeofday(struct timeval *tp, void *tzp)
{
  time_t clock;
  struct tm tm;
  SYSTEMTIME wtm;
  GetLocalTime(&wtm);
  tm.tm_year   = wtm.wYear - 1900;
  tm.tm_mon   = wtm.wMonth - 1;
  tm.tm_mday   = wtm.wDay;
  tm.tm_hour   = wtm.wHour;
  tm.tm_min   = wtm.wMinute;
  tm.tm_sec   = wtm.wSecond;
  tm. tm_isdst  = -1;
  clock = mktime(&tm);
  tp->tv_sec = clock;
  tp->tv_usec = wtm.wMilliseconds * 1000;
  return (0);
}
#endif

但是,编译时,提示已定义问题,因此,将此函数定义为全局函数,解决重定义问题。

3.MAXMIN问题,错误提示error C2589: “(”:“::”右边的非法标记错误的处理

由于使用定义

#define MAX_DOUBLE std::numeric_limits::max();时,

在下面使用时double d1 = MAX_DOUBLE提示这种错误。

查了一下是:

   注:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。

 

   函数模板max与Visual C++中的全局的宏max冲突。 

    第一种办法:设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用Visual C++的min/max宏定义。

                       项目属性   ——> C/C++ ——> 预处理器 ——> 预处理器定义 (此处添加预定义编译开关   NOMINMAX)
 

你可能感兴趣的:(C++,未定义,系统切换,错误异常)