使用扩展嵌入式C++,如何使其在发布构建中导致编译错误:
Param okParam("Yeah!"); // this line should be ok
Param nOkParam("REEEEEEEEEEE"); // too big array, not ok. compiler error.
定义:
int const c_max = 10;
template<int N>
struct Param
{
char value[c_max];
Param(char const (&p_value)[N])
{
memcpy(value, p_value, sizeof(p_value));
}
};
我认为你无法模板化构造函数,因此整个结构需要进行模板化,是吗?
我希望这能提供一个清晰的编译错误,以便使用者立即注意到。
我们的扩展嵌入式C ++版本不提供任何STL容器,我不确定是否可能。
我正在寻找某种方式使模板结果产生良好的编译错误。不幸的是,由于平台不支持,我也不能使用boost。
char value[c_max];
is not valid,c_max
needs to be a compile time constant. Also if your compiler does not supportstatic_assert
then it can be relatively easily implemented manually. SeeBOOST_STATIC_ASSERT
- user7860670int const c_max = 10;
是一个常量表达式。 - llllllllll