Visual Studio

时间:2015-10-28 05:10:26

标签: c++ visual-studio-2015 windows-10 file-extension

我的项目的一个头文件(lib.hpp文件)中有以下代码:

#ifndef SLIM_MATHS_LIB_HPP_
# define SLIM_MATHS_LIB_HPP_

namespace slim
{
namespace maths
{

namespace lib
{
template <typename T>
inline T        min(T a, T b); // Many errors on this line (see below)
// Other functions
}
}
}

# include "lib.ipp" // Functions definitions are inside

#endif // !SLIM_MATHS_LIB_HPP_

它与GCC在GNU / Linux系统上的编译和工作非常顺利。

现在我尝试在Windows 10上使用Visual Studio 14.0编译它,我在min函数定义行上得到了大量错误,如下所示:

  

错误C2146语法错误:在标识符之前缺少')'   'a'slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23
  错误C2433'T':数据不允许'内联'   声明slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23
  错误C2365'T':重新定义;以前的定义是'模板   参数'slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23
  错误C2061语法错误:标识符   'a'slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23
  错误C2059语法错误:   ')'slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23
  错误C2146语法错误:在标识符之前缺少')'   'b'slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23
  错误C2146语法错误:缺少';'在标识符之前   'b'slim3d-core C:\ Users \ msi \ Desktop \ SLIM3D \ inc \ slim \ maths \ lib.hpp 23

我已经在Windows 7系统上使用Visual Studio 14.0成功编译了它,但lib.hpplib.ipp分别命名为lib.hhlib.hpp,所以我认为它是Windows 10中的系统问题或扩展问题 也许Visual Studio拒绝将.ipp文件的内容视为C ++代码,因为当我打开它时它不会将其作为代码着色。但是,由于它包含在.hpp文件中而未直接添加到解决方案中,因此应该没有区别。

1 个答案:

答案 0 :(得分:2)

min被定义为windows.h中的一个宏。在声明您的功能之前,在标题中添加#undef min行。