改进的错误检查-learning ros for robotics programming - second edition
8.6改进的错误检查为本书其余部分改进错误检查是很方便的。用内联函数可以简单地包括一个文件而不用担心连接什么。到目前为止,assert()宏已用于“错误检查”,但它真正用处是调试并终将被能够在运行时提供更多有用信息的东西代替。何况异常处理程序(在1 7章介绍)已提供了更多的处理这些错误的有效的方法。
你可能想知道,为什么要在这个时候讨论预处理器?因为_ FILE 和 LINE _指示仅和预处理器一起起作用并用在assert()宏里。假如assert()宏在一个错误函数里被调用,它仅打印出错函数的行号和文件名字而不是调用错误函数。这儿显示了使用宏联接(许多是assert()方法)函数的方法,紧接着调用assert()(程序调试成功后这由一个#define NDEBUG消除)。
如果你对预处理宏和内联函数的区别感兴趣,可以查看这篇文章。对于想了解assert宏用法的朋友,建议阅读这里。而对深入探讨内联函数与宏定义的区别有兴趣的,可以参考这篇分析。
下面的头文件将放在书的根目录中,所以它可以从所有的章节里得到。“Allege”是assert的同义词。函数allege_error()有两个参数:一个是整型表达式的值,另一个是这个值为false时需打印的信息。如果你想进一步了解assert函数的详细用法,这篇文章将为你提供更多信息。
你是不是觉得这些预处理器和内联函数的用法有点复杂?别担心,慢慢来,多看看深入探讨宏内联函数与普通函数的区别,你一定会豁然开朗!
下载地址
用户评论