1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1722): error C2062: 意外的类型“unsigned int”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1722): error C2334: “:”的前面有意外标记;跳过明显的函数体
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2143: 语法错误 : 缺少“)”(在“}”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2143: 语法错误 : 缺少“}”(在“)”的前面)
在WIN7+VS2012环境下,使用32位平台,编译osgShadow项目时,ViewDependentShadowMap编译失败,提示:
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2059: 语法错误:“)”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1734): error C2238: 意外的标记位于“;”之前
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2628: “ConvexHull”后面接“double”是非法的(是否忘记了“;”?)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): warning C4003: “max”宏的实参不足
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2143: 语法错误 : 缺少“;”(在“<L_TYPE_raw>”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2059: 语法错误:“<L_TYPE_raw>”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1736): error C2059: 语法错误:“)”
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1737): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1737): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>E:\osg\OpenSceneGraph-3.4.0\src\osgShadow\ViewDependentShadowMap.cpp(1751): error C2270: “minRatio”: 非成员函数上不允许修饰符
...
问题代码为:
double min(unsigned int index) const
{
double m = DBL_MAX;
for(Edges::const_iterator itr = _edges.begin();
itr != _edges.end();
++itr)
{
const Edge& edge = *itr;
if (edge.first[index]<m) m = edge.first[index];
if (edge.second[index]<m) m = edge.second[index];
}
return m;
}
double max(unsigned int index) const
{
double m = -DBL_MAX;
for(Edges::const_iterator itr = _edges.begin();
itr != _edges.end();
++itr)
{
const Edge& edge = *itr;
if (edge.first[index]>m) m = edge.first[index];
if (edge.second[index]>m) m = edge.second[index];
}
return m;
}
该怎么处理呢,谢谢大家。
2 个解决方案
#1
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#2
参考另外一个帖子得到了解决方法,使用预处理器来屏蔽min和max:
项目属性 ——> C/C++ ——> 预处理器 ——> 预处理器定义 ——>加入NOMINMAX,
具体见http://blog.csdn.net/wangshubo1989/article/details/50597178。
项目属性 ——> C/C++ ——> 预处理器 ——> 预处理器定义 ——>加入NOMINMAX,
具体见http://blog.csdn.net/wangshubo1989/article/details/50597178。
#1
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#2
参考另外一个帖子得到了解决方法,使用预处理器来屏蔽min和max:
项目属性 ——> C/C++ ——> 预处理器 ——> 预处理器定义 ——>加入NOMINMAX,
具体见http://blog.csdn.net/wangshubo1989/article/details/50597178。
项目属性 ——> C/C++ ——> 预处理器 ——> 预处理器定义 ——>加入NOMINMAX,
具体见http://blog.csdn.net/wangshubo1989/article/details/50597178。