C++ 如何解决MSVC处理C++;与GCC/Clang不同的函数模板(无法识别的模板定义)?

C++ 如何解决MSVC处理C++;与GCC/Clang不同的函数模板(无法识别的模板定义)?,c++,templates,visual-c++,visual-studio-2017,C++,Templates,Visual C++,Visual Studio 2017,存在模板辅助函数 #包括 命名空间帮助程序{ 模板 超出正常化范围(以v为单位,以最小值为单位,以最大值为单位){ 返回静态_-cast(v-min)/静态_-cast(max-min); } } int main() { float resultauto=helpers::normalizeFromRange(10,0,40); float resultF=helpers::normalizeFromRange(20,0,40); double resultD=helpers::normali

存在模板辅助函数

#包括
命名空间帮助程序{
模板
超出正常化范围(以v为单位,以最小值为单位,以最大值为单位){
返回静态_-cast(v-min)/静态_-cast(max-min);
}
}
int main()
{
float resultauto=helpers::normalizeFromRange(10,0,40);
float resultF=helpers::normalizeFromRange(20,0,40);
double resultD=helpers::normalizeFromRange(30,0,40);

std::cout您的项目是否包括
windows.h

包括
windows.h
还引入了
OUT
in
的预处理器定义,我认为这是导致此错误的原因

将模板类型名更改为
OUTX
INX
可以修复我的计算机上的错误


我发现了一个相关的SO问题:

是否将
min
max
定义为带有
MSVC
的宏?如果重命名这些参数会发生什么?啊哈,是的。如果我添加
#include
,我确实会遇到类似的错误,这臭名昭著地定义了
min
max
@MFisherKDX <代码> AuthigeEFLASK(在AsdasDA中,在SDFSFDSF中)< /C>和同样的错误解决了这个问题。我不包括任何MSW标题,只是STL。外部LIBS使用Do。谢谢!我不在MSW上正常地做C++,只有POSIX-GNU和MACOS。我将用MSW替换后者,并想给MSVC一个尝试。(不直接对明文)以及MSW标题,我觉得有趣的时间:)KROKO我一直满意MSVC。一个建议,使用<代码> /许可- < /C>编译器选项,以更好的C++标准一致性(语言->一致性模式Project属性页)。谢谢建议,已经做过了。(因为它在Visual Studio中是默认启用的)。我对警告上瘾,所以在GCC上我总是启用
-Wall-Wextra
,并通过
-Wconversion-Wpedantic-Wno-c++98 compat pedantic
(clang有
-Weverything-Wno-c++98 compat
)@kroko查看警告有
/W4
(警告级别4)。不要为
/Wall
而烦恼,因为它会导致大量带有标准库或windows标题的警告消息垃圾邮件。
resultFAuto: 0.25
resultF: 0.5
resultD: 0.75
Microsoft Visual Studio Community 2017 
Version 15.9.9
VisualStudio.15.Release/15.9.9+28307.518
Installed Version: Community
Microsoft Visual C++ 2017
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27027.1
error C2988: unrecognizable template declaration/definition
error C2059: syntax error: '('
error C2143: syntax error: missing ';' before '{'
error C2447: '{': missing function header (old-style formal list?)