使用boost模板函数解决冲突的宏名称的最佳方法是什么? 在包含boost / chrono.hpp之后我得到了编译器错误:
CCN5816(W)为宏“round”指定的参数太多。额外的参数被忽略。 “/usr/include/math.h”,第2133.16行:CCN5425(I)“round”在“/usr/include/math.h”的第2133行定义。
-Wall -Wextra -pedantic-errors -Wno-deprecated -std=c++14 -march=native -g -ggdb -fno-omit-frame-pointer
与模板函数round
冲突。
/usr/include/math.h
boost::chrono::round
/boost/chrono/round.hpp
#define round(x) __round(x)
namespace boost
{
namespace chrono
{
/**
* rounds to nearest, to even on tie
*/
template <class To, class Rep, class Period>
To round(const duration<Rep, Period>& d)
{
宏
BoostChronoTest.cpp
#undef
答案 0 :(得分:-1)
简单地说,始终包括<gtest/gtest.h>
<boost/chrono.hpp>
之后:#define round ...
不会影响推广代码