“包括你使用的”

问题描述:

我读过关于工具的一个名为“包含你使用”的工具,它可以帮助我清理多余的工作,包括我的源代码中的 。我知道有一个编译器LLVM(clang)和gcc版本。 我的问题是 1.为什么这个工具是编译器依赖的,而不是编译器的“跨平台”。为什么从一开始 该工具的创建者并没有使其与编译器无关?它与 具有的特殊实现有关吗? 2.如果我想采取兼容llvm的工具版本,我想使它与gcc兼容(因为我使用gcc的 )。我必须为此做些什么?“包括你使用的”

+1

该工具依赖于仅由clang提供的API。大多数编译器不是在开发工具时考虑的,也不会公开正确的信息来制作这样的工具。你的代码应该在clang中编译得很好,所以如果你必须继续使用gcc,那么就使用它来运行你的工具。将工具移植到gcc可能是不可能的,或者至少是一项巨大的任务。 – xaxxon

大多数情况下,包含你应该使用什么应该能够处理任何有效的C++代码库,无论该代码库是否使用gcc或clang编写。我最近有机会在通常使用gcc编译的非常大的代码库上运行Include-What-You-Use,它运行良好。所以在这个意义上它已经兼容了。

也就是说,它可能无法正常工作。它提供的一些信息很可能是错误的,即使它是一个叮当声代码库。所以总是手动验证输出。