在使用 libtooling 的程序中,有没有办法让某些类型被识别为“内置类型”?例如,我想让 int16_t、uint32_t 等被识别为规范的内置类型,而不是 typedef 到 short、unsigned 等。
问问题
940 次
1 回答
2
如果您看一下".../llvm/tools/clang/include/clang/AST/BuiltinTypes.def"
,那将声明内置类型,例如int
and 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 回答