在使用libtooling的程序中,是否有办法将某些类型识别为“内置类型”?例如,我想将int16_t,uint32_t等识别为规范的内置类型,而不是将typedef定义为short,unsigned等。
如果您看一看".../llvm/tools/clang/include/clang/AST/BuiltinTypes.def"
,则将声明内置类型,如int
和long long
。这并不完全是直截了当的。您将需要修改很多代码,例如".../llvm/tools/clang/lib/Sema/Sema.cpp"
和中的类型定义部分".../llvm/tools/clang/lib/AST/Type.cpp"
。如果您使用grep Int128
(很好的选择,因为clang本身本身并没有使用太多)(例如size_t
,与之相反),您会发现它出现在很多地方。您必须用其他代码覆盖所有(或至少大多数)地方,以介绍自己制作的新类型。
我想说,做类似的事情可能要容易得多clang -include cstdint myprog.cpp
。换句话说,请确保#include <cstdint>
在编译器中完成了[或同一文件的自己的版本],也可以在自己的代码中将其添加到驱动程序中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句