问题标签 [clang++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 有没有人为 iOS 编译过 GMock
我正在尝试从 iOS 的源代码编译 GMock。我想将其编译为存档,以便多个 iOS 项目可以使用它。我正在使用 cmake 来构建这个模块(现有的构建系统使用 cmake 将 GMock 构建为 dylibs,所以如果我可以使用相同的方法会更容易)。我必须在 CMakeLists.txt 中添加以下内容才能将其构建为存档。
set(BUILD_SHARED_LIBS OFF)
存档已创建,但问题是某些测试(在 gtest_build_tests 中)失败。
有没有人成功地将 GMock 构建为 iOS 的存档?如果是这样,你们是怎么做到的??此外,我必须在不使用 Xcode 或 xcodebuild 命令的情况下从终端管理构建过程。
谢谢, 阿比奈
c++ - 在 C++ 中过度杀伤“变量初始化”错误?
我注意到g++
抱怨有点过于严格crossed initialization
,我想知道为什么这些误报错误不能仅仅通过在编译时查看程序的 SSA 形式来删除。
让我举一个非常简单的例子:
使用g++ -Wall -Wextra -o example1 example1.cc
( g++
4.8.1) 编译时,编译器会给出以下错误消息:
因此,它会在实际上没有风险的情况下引发错误,因为该变量未使用(编译器显然拥有这两种信息并且无法将其结合起来以推断该错误是误报)。
更奇怪的是,我希望 LLVM 在分析程序时更有效。所以,我用(3.4)clang++
在这个简单的例子上尝试了(LLVM )。而且,我得到了同样的错误信息:clang++ -Wall -Wextra -o example1 example1.cc
clang++
所以,我很确定我在这里遗漏了一些重要的东西,这个问题使得检测这种误报比我更难。但是,我不知道它是什么。或者也许,C++ 规范明确规定必须是这样的。
如果有人有想法,请随时分享!
编辑gcc
:我还在 C (或)中编译了完全相同的代码clang
,并且它运行良好,只是警告说它i
是一个未使用的变量。因此,它强化了这样一个事实,即这更有可能与 C++ 规范相关联,而不是在编译时检测到此问题的问题。
c++ - 非类型模板参数不是常量表达式
我有以下代码:
当我使用以下命令行编译时:
我收到以下错误:
我理解我相信的问题。模板的参数需要是 constexpr 而 i 显然不是。所以问题是,我是否可以做一些改变来让它发挥作用。通过这种工作,我的意思是,除了手动执行之外,我能否以某种更好的方式从该模板类中为 ATYPE 中的每种类型重置这些静态计数器:
当 ATYPE 包含许多类型时,这不是那么优雅和实用。
非常感谢您的帮助和建议。
c++ - 为什么这段代码在 Clang++ 中有效,但在 G++ 中无效?
考虑以下代码:
使用 clang++ 编译不会产生错误:
但是,通过 ideone 使用 g++ 4.8.1 编译会出现错误:
如果我删除Foo(const Foo&) = delete;
,那么它在 g++4.8.1 中编译得很好。
我的代码中是否存在一个编译器忽略但另一个编译器没有忽略的错误?
c++ - 如何修复错误“clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)”?
编译包含 main.cpp、pattern.cpp 和 pattern.h 的 C++ 程序时(包含两个函数声明但没有类的头文件;这些函数在 pattern.cpp 中定义,而 main.cpp 包含 #include "pattern.h"在顶部)通过键入:
错误信息是:
我该如何解决?我尝试输入-v
,但 clang 输出已终止,这是一个无效命令
c++ - 模板函数中的 volatile 类型推导有什么问题?
我有一个模板功能:
当我尝试像这样调用它时:
g++、clang++ 编译器都是这样说的:
推断参数“T”的冲突类型(“volatile List::Node *”与“List::Node *”)
调用此模板函数的正确方法是什么?
更新。
现在我不确定node
' 的类型 - 也许,我应该将其更改为Node* volatile node;
?
我希望变量node
是易变的,但不是指向对象。
c++ - 默认参数,gcc vs clang
代码如下:
VS 2013 和 gcc 4.8.0 接受这样的代码,而 clang 3.3 拒绝这样的代码:
错误:在重新声明时添加默认参数使此构造函数成为默认构造函数
从标准(C++03 和 C++11)的角度来看,谁是正确的?
笔记:
我也喜欢 clang 的选择,但我会向 gcc 和 Visual Studio 报告错误,如果从标准的角度来看这是不正确的,这有助于说服编译器的开发人员修复这个问题。
海合会
我在这里描述了问题:http: //gcc.gnu.org/bugzilla/show_bug.cgi ?id=58194
但运气不好,他们暂停错误修复,直到草案成为标准。
c++ - 使用 clang++ 编译时的警告
当我编译代码时:
它给出以下警告:
>C:\Users\KDesktop\AppData\Local\Temp\cc7XPBuL.o 中的符号“_main”类型从 32 更改为 512
其次,编译器确实会生成一个 .exe 文件,但每当我运行它时,程序就会立即崩溃。有人可以帮我解决这个问题。
谢谢
linker-errors - clang++ -stdlib=libc++ 导致未定义的引用
为什么在 libc++ 中使用 clang 时出现以下链接器错误:
在哪里:
代码很简单:
c++ - clang 无限尾递归优化
% clang++ -O2 测试.cc
% 时间 ./a.out 42
1490723512
./a.out 42 0.00s 用户 0.00s 系统 69% cpu 0.004 总计
% 时间 ./a.out 42
1564058296
./a.out 42 0.00s 用户 0.00s 系统 56% cpu 0.006 总计
% g++ -O2 测试.cc
% ./a.out 42 #无限递归
^C
那么它是clang++的一个bug还是一个特性?