我想为Arduino编写c ++代码(实际上是HardwareSerial部分的扩展)。 用户可以在他的草图中传递设置,如
Serial.begin(9600, SERIAL_8N1);
SERIAL_8N1是预处理器常量。但是像SAM8XE之类的一些UART不允许所有选项。这就是为什么我不想在用户尝试使用无效选项时触发编译器错误的原因。因为代码将在微控制器上运行,所以我没有机会提出异常或类似的东西。
有没有办法在c ++中使用有用的帮助文本触发编译器错误,例如"无效的UART选项"?
答案 0 :(得分:0)
如果用户在代码中写入SERIAL_8N1,您是否要删除编译错误? 如果是这样,我定义了一个插入无效代码的预处理器宏,比如
#define SERIAL_8N1 this will drop an error
或者您可以使用#error预处理程序指令
答案 1 :(得分:0)
您可以在编译时使用Boost通过static_assertions。
BOOST_STATIC_ASSERT( condition );
BOOST_STATIC_ASSERT_MSG( condition, "Not supported" );
请查看以下链接以获取更多详细信息:http://www.boost.org/doc/libs/1_55_0/doc/html/boost_staticassert.html
-Kim