为啥即使我在项目设置中更改了语言标准,std::lcm() 也不起作用?
Posted
技术标签:
【中文标题】为啥即使我在项目设置中更改了语言标准,std::lcm() 也不起作用?【英文标题】:Why does std::lcm() not work even though I changed the language standard in project settings?为什么即使我在项目设置中更改了语言标准,std::lcm() 也不起作用? 【发布时间】:2020-07-02 11:48:43 【问题描述】:我想使用c++17 lcm函数,但是即使在切换项目的标准后编译器仍然认为它是错误的。也许我只是遗漏了一些东西,但互联网上对这个问题的每一个答案都是简单地更改这个没有帮助的设置。
例如这个程序
#include<numeric>
int compute_lcm(int x1, int x2)
return std::lcm(x1, x2);
int main()
int a = compute_lcm(2, 3);
未找到标识符错误(错误 C3861 'lcm': identifier not found)无法编译。 VS版本是2017社区。p>
【问题讨论】:
你#include <numeric>
了吗?请发布错误(请复制粘贴 as text 到问题中)
是的,我做到了。添加错误。
你有哪个VS2017版本?它是在 15.3 中添加的。
能否请您发布您正在编译的整个代码?您应该能够将其减少到几行。
好吧,我当然可以写一个计算函数,但我想知道为什么 c++17 的特性对我来说不可用。顺便说一句,std::gcd 也不起作用。
【参考方案1】:
这是因为编译器没有设置对 C++17 的支持。您可以选择Properties->Configuration Properties->C/C++ ->All Options->C++ Language Standard
并选择ISO C++17 Standard
。
【讨论】:
我设置C++17 standard
后,程序运行正常。我认为某些地方或设置可能有问题。你能给我提供更多信息吗?另外,关于C3861,你可以参考这个link。以上是关于为啥即使我在项目设置中更改了语言标准,std::lcm() 也不起作用?的主要内容,如果未能解决你的问题,请参考以下文章