0

在使用 libtooling 的程序中,有没有办法让某些类型被识别为“内置类型”?例如,我想让 int16_t、uint32_t 等被识别为规范的内置类型,而不是 typedef 到 short、unsigned 等。

4

1 回答 1

2

如果您看一下".../llvm/tools/clang/include/clang/AST/BuiltinTypes.def",那将声明内置类型,例如intand long long。这并不完全是直截了当的。您将需要修改相当多的代码,例如在".../llvm/tools/clang/lib/Sema/Sema.cpp"和中有部分类型定义".../llvm/tools/clang/lib/AST/Type.cpp"。如果您使用 grep for Int128(不错的选择,因为 clang 本身并没有使用 [much] 本身,而不是 example size_t),您会发现它出现在很多地方。您必须使用附加代码覆盖所有(或至少大部分)这些地方,以引入您自己制作的新类型。

我会说做类似的事情可能要容易得多clang -include cstdint myprog.cpp。换句话说,确保#include <cstdint>[或您自己的同类文件版本]在编译器的幕后完成 - 您也可以在自己的代码中将其添加到您的驱动程序中。

于 2014-04-25T07:50:33.790 回答