有关clang LLVM编译器前端的问题。有关C的一般问题,请使用C标记。
我是一名 MSVC 用户,最近我使用带有 GCC 和 Clang 的 Linux。 我为 MSVC 链接器映射文件制作了一个解析器,以提取一些函数及其参数和返回类型。但我意识到 gcc 地图 f...
按照主要 clang 静态分析器网页 (http://clang-analyzer.llvm.org/scan-build.html) 的指示... 我有一个小 C 文件,其中充满了严重的错误(badcode.c): int main(...
是否可以更改 Clang 的彩色诊断颜色选择? 我喜欢我的终端有黑色背景,但我刚刚注意到我错过了 Clang 对我有用的诊断...
在 varDecl() 中匹配模板参数的加糖 QualType
背景 内置的 C++ 类型没有定义的大小(只有最小大小),所以我们 要求所有整数类型使用显式定义的 typedef,因此大小为 所有平台都一样,
iOS 编程是否可以通过 Clang 和 llvm 实现虚拟化?
我不明白整个 Clang 和 llvm 的事情。我问自己代码在 iOS 设备上运行时是否在虚拟机中运行,或者在编译时是否通过“虚拟机”进行编译...
为什么 std::copy 没有溢出缓冲区;只收到 clang sanitizer 警告“未定义的行为”?
我担心代码审查中的 std::copy 行。我在上面喷了消毒剂,确认了气味。我进入调试器,看到副本没有溢出到下一个字段......
OS X 10.8 上的 CMAKE、Clang 和 C++v11
OS X 1.8 CMAKE 2.8.9 铿锵$铿锵-v Apple clang 版本 4.0 (tags/Apple/clang-421.10.60)(基于 LLVM 3.1svn) 目标:x86_64-apple-darwin12.0.0 线程模型:posix CMAKELists.txt:
我想知道是否可以手动将不存在的头文件添加到bindgen构建器中。 我正在使用的 C 代码库在编译过程中生成一些头文件,并且...
如何从 https://android.googlesource.com/ 克隆/下载特定的 clang 版本?
我想克隆/下载 clang-r428724。我试过: ┌──(root㉿kali)-[~/文档] └─# git克隆 https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+log/refs/heads/master/clang-r42...
clang -fsanitize=地址找不到libclang_rt.asan
这是我第一次从源代码构建 clang,所以也许我搞砸了,但是如果我尝试使用 -fsanitize=address 编译“hello world”,我会收到错误: $ clang -fsanitize=地址你好...
获取 CXCursor_BinaryOperator 的运算符类型
我正在尝试在 C++ 源文件中查找作业: x = 10; 我正在使用 libclang 来解析它并遍历 AST。有一个 CXCursor_BinaryOperator 表示二元运算符。有没有办法
有人在 ppc 架构上运行 Clang 作为 C 编译器吗?我正在尝试复活旧的 G4 12 英寸 Powerbook(867 Mhz G4 CPU)并将安装 Linux(带有 Linux Mint/LXDE 前端的 Debian)...
我目前正在使用 LLVM/clang-16(从 github 存储库构建)进行 OpenMP 卸载。使用 clang 中的内置分析工具(使用 LIBOMPTARGET_P 等环境变量...
螺旋编辑器中的 cpp 自动补全功能不起作用,Ubuntu 24.10
我使用 Ubuntu 24.10,并且刚刚安装了 helix 文本编辑器(helix 24.7 (079f5442))。我是编辑新手,正在寻找出路。我已经在 languages.toml 中复制并安装了整个 l...
这个构造函数 basic_string<decltype(nullptr)>(char const*) 是做什么的?
最近我在读aarch64的一些汇编代码,发现了这个奇怪的构造函数,它似乎没有在basic_string中定义:
我正在努力解决这段代码的奇怪行为。问题是这个片段的输出是双倍的。但我们在 lhs 中有 int 。我挖了一段时间,发现编译器把垃圾加倍了......
这是最小的可重现示例: // my_func.h typedef 易失性结构 { 整数a; my_vdata_t; 类型定义结构{ 整数a; 我的数据t; extern void (*vfunc)(my_vdata_t* 数据); 外部声音...
你能将 int*[N] 转换为 std::span<const int * const> 吗?
我有以下代码: #包括 int* 指针[3]; std::span s = 指针; GCC 接受这一点,但 Clang(编译 libstdc++)拒绝它,并指出: 我有以下代码: #include <span> int* pointers[3]; std::span<const int* const> s = pointers; GCC 接受这一点,但 Clang(编译 libstdc++)拒绝它,并指出: <source>:4:29: error: no viable conversion from 'int *[3]' to 'std::span<const int *const>' 4 | std::span<const int* const> s = pointers; | ^ ~~~~~~~~ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:230:7: note: candidate constructor not viable: no known conversion from 'int *[3]' to 'const span<const int *const> &' for 1st argument 230 | span(const span&) noexcept = default; | ^ ~~~~~~~~~~~ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:192:2: note: candidate template ignored: could not match 'const int *' against 'int *' 192 | span(type_identity_t<element_type> (&__arr)[_ArrayExtent]) noexcept | ^ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:199:2: note: candidate template ignored: could not match 'array<_Tp, _ArrayExtent>' against 'int *[3]' 199 | span(array<_Tp, _ArrayExtent>& __arr) noexcept | ^ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:206:2: note: candidate template ignored: could not match 'array<_Tp, _ArrayExtent>' against 'int *[3]' 206 | span(const array<_Tp, _ArrayExtent>& __arr) noexcept | ^ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:218:2: note: candidate template ignored: constraints not satisfied [with _Range = int *(&)[3]] 218 | span(_Range&& __range) | ^ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:213:8: note: because '!is_array_v<remove_cvref_t<int *(&)[3]> >' evaluated to false 213 | && (!is_array_v<remove_cvref_t<_Range>>) | ^ /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/15.0.0/../../../../include/c++/15.0.0/span:238:2: note: candidate template ignored: could not match 'span<_OType, _OExtent>' against 'int *[3]' 238 | span(const span<_OType, _OExtent>& __s) noexcept | ^ 请参阅编译器资源管理器 我的印象是,如果只需要限定转换(例如 std::span 到 int*),则可以从范围构造 const int * const,那么这里哪个编译器是正确的? 这很可能只是 Clang/GCC 互操作性的怪癖,考虑到代码也使用 -stdlib=libc++ 进行编译。 std::span<const X> 没有采用 X[N] C 数组引用的构造函数(从 c++26 开始)。 所以在这种情况下你必须手动构建跨度: span<const int* const> s{ pointers, 3 }; 是的,这有点痛苦,并且使用 std::array 代替 C 数组并没有多大帮助,出于同样的原因(但是 std::array 总是比 c 数组更好)。 还有,如果有一个span::operator< span<const T> >就好了...
在 Qt 项目中编译一组文件时,我看到很多与此类似的警告。 在 /usr/local/Trolltech/Qt-4.8.6/include/QtGui/qevent.h:52 包含的文件中: /usr/local/
我正在使用 Clang::Tooling 库来解析一些头文件。 由于 clang 没有预处理头文件和其他预处理器内容,我似乎无法正确解析。 我该如何告诉 Clang::