clang调试诊断信息expressivediags
发布时间
阅读量:
阅读量
Clang调试诊断信息Expressive Diagnostics
除了具备高效性和实用性,Clang 的目标在于提升用户的使用体验。作为一款命令行编译器,其生成的诊断信息(包括错误和警告)力求具备更高的可用性。实现这一目标有多种途径。依据命令行编译器的经验,将 Clang 的输出与 GCC 4.9 的输出进行比较,可以更好地理解其优势。
Column Numbers and Caret Diagnostics
首先,Clang 所生成的所有诊断信息均包含完整的列号数据。该编译器驱动程序利用这些信息打印“点诊断”(即绿色的“^”字符)。IDE 可以借助这些信息,在代码中显示内嵌错误标记,从而帮助用户快速定位问题所在。即便在字符串内部,“^”字符也能准确指示出问题位置,使跳转至错误位置变得极为简便,尤其当一行中存在多个相同字符时,具有显著的帮助作用。
$ clang -fsyntax-only format-strings.c
format-strings.c:91:13: warning: ‘.*’ 指定的字段精度缺少匹配的 ‘int’ 参数
printf("%.*d");
GCC 在此方面也逐步采纳了 Clang 的做法,并能够在输出结果中包含源文本片段以及诊断列号。然而,Clang 提供的列号更为精准地指向了问题所在的格式说明符,而非解析器在检
全部评论 (0)
还没有任何评论哟~
