clang 相关问题

有关clang LLVM编译器前端的问题。有关C的一般问题,请使用C标记。

具有易失性参数功能的 LLVM kCFI 消毒器

这是最小的可重现示例: // my_func.h typedef 易失性结构 { 整数a; my_vdata_t; 类型定义结构{ 整数a; 我的数据t; extern void (*vfunc)(my_vdata_t* 数据); 外部声音...

回答 1 投票 0

你能将 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> >就好了...

回答 1 投票 0

如何停止有关未使用的私有字段的警告?

在 Qt 项目中编译一组文件时,我看到很多与此类似的警告。 在 /usr/local/Trolltech/Qt-4.8.6/include/QtGui/qevent.h:52 包含的文件中: /usr/local/

回答 4 投票 0

Clang 工具预处理源文件

我正在使用 Clang::Tooling 库来解析一些头文件。 由于 clang 没有预处理头文件和其他预处理器内容,我似乎无法正确解析。 我该如何告诉 Clang::

回答 1 投票 0

如何禁用 clang 的 GNU 扩展?

我尝试过“-U__GNUC__”,但预处理器的输出仍然包含“__attribute__”或类似的内容。如何让编译器丢弃那些不标准的东西呢?我的操作系统是 OS X 10.10,...

回答 1 投票 0

返回元素比通过引用发送元素并在那里修改慢吗?

假设我有一个函数可以生成一个大结构(在本例中是一个巨大的 std::vector),以及一个重复调用它的循环: std::vector 渲染(int w,int h,int time){ std::vec...

回答 3 投票 0

如果我在链接时不使用 -g 会发生什么

使用 gcc 或 clang,我使用 -g 选项进行编译,而不使用它进行链接。这是否意味着最终的二进制文件在性能上与整个编译中没有 -g 选项的二进制文件相当...

回答 2 投票 0

clang 未对齐堆栈,然后在 _start 中尝试将 vmovaps 编写为 C 函数

我在start.c中有一个简单的c函数 $猫开始.c int main(int,char**); 无效_开始(){ char*v[2]={"k",0}; 主要(1,v); } 当我编译为汇编程序时,使用 clang -O -march=cannonlake -S...

回答 1 投票 0

是否可以使用 clang 自动包含缺失的 C++ 头文件?

我的计划是使用 clang 解析代码并找到类型 undefined ,然后找到相应的头文件,最后在文件中插入 #include"xxx" 。 clang 能做到这一点吗? 我想我

回答 2 投票 0

如何安装llvm-14

我之前有过llvm-14,但发生了一些非常奇怪的事情,但它被删除了。我尝试了 sudo apt install llvm-14 但我收到错误: llvm-14 :依赖:llvm-14-runtime (= 1:14.0.6~++20221030064722+

回答 2 投票 0

clang 中的 -mtune=native 相当于什么?

使用 -mcpu/-march 允许在 x86 或 altivec 上启用一组扩展指令,例如 sse,但是在针对当前 cpu 进行构建时,这并不总是足够的。 例如,传递 -mcpu=cascadelake...

回答 1 投票 0

TensorFlow 错误:在 'offsetof' 中定义类型是 Clang 扩展 [-Werror,-Wgnu-offsetof-extensions]

我对此很陌生。 尝试使用以下命令构建 iOS 选择性框架 - bashtensorflow/lite/ios/build_frameworks.sh --input_models=model1.tflite,model2.tflite --target_archs=x86...

回答 1 投票 0

wasm-ld --export-all 不适用于静态库

在使用 clang 工具链构建 WASM 模块时,我遇到了一个我很难理解的行为。基本上,我有一个非常简单的 C++ 代码(在 test.cc 中): extern "C" int fo...

回答 1 投票 0

如何使用 fmt 的范围支持可靠地格式化 std::vector<bool>?

我在尝试跨不同环境格式化布尔向量时遇到不一致的行为: #包括 #包括 #包括 int main() { ...

回答 1 投票 0

我想要 __builtin_popcountll 的两个实现

我有一些代码想要运行快速内置CPU指令popcnt(当使用适当的标志(例如g++ -mpopcnt或clang++ -march=corei7)编译__builtin_popcountll时,这可能...

回答 3 投票 0

std::vector<bool>::std::exchange 的引用

std::exchange 不适用于 std::vector::reference 是否有技术原因,或者是 GCC 和 Clang 实现中的错误?使用 MSVC 可以很好地编译。 我有这样的设置(m...

回答 2 投票 0

是否可以并行编译单个C++翻译单元?

是否可以并行编译单个C++翻译单元? 如果是这样,怎么办? (具体是如何使用 clang 或 gcc 来做到这一点) 不然为什么不呢?

回答 2 投票 0

如何为Android编译LLVM/Clang?

我正在尝试在Mac上使用Cmake编译适用于Android的LLVM/Clang 8.0.1(因为不再支持我之前使用的自动工具)。 我正在使用 https://github.com/llvm/llvm-project.git。 在构建目录中我是...

回答 3 投票 0

检查 C 中对 _Generic() 选择的支持

我使用宏通用选择来“重载”自定义库中的某些功能,并且我希望使其尽可能可移植,因此我试图检查是否存在通用选择支持...

回答 2 投票 0

Clang 格式过多的标识

为什么 clang-format 会在复杂 lambda 中向函数参数(例如 std::move(widget))添加过多的缩进或换行符?我如何配置它以保持参数内联或减少不必要的

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.