草庐IT

c++ - 在视觉 C++ 中是否有相当于 gcc 的 -Wshadow

-Wshadow将“每当局部变量遮蔽另一个局部变量时发出警告。”。VisualC++(2008)中是否有等价物?我试过/W4但它没有接受它。我也试过Cppcheck但那也没有看到。例如如果我不小心这样做了:classA{private:intmemberVar;public:voidfn(){intmemberVar=27;}};我真的很想知道! 最佳答案 查看警告C6244和C6246但您需要启用自动代码分析才能获取它们,请参阅Howto:EnableandDisableAutomaticCodeAnalysisforC/C++如

c++ - 我们在 GCC 9 中有 C++20 范围库吗?

我们在新发布的GCC9中支持C++20范围库吗?我从以下位置复制了以下范围库的示例代码:https://en.cppreference.com/w/cpp/ranges#include#include#includeintmain(){std::vectorints{0,1,2,3,4,5};autoeven=[](inti){return0==i%2;};autosquare=[](inti){returni*i;};for(inti:ints|std::view::filter(even)|std::view::transform(square)){std::cout但是当使用g+

c++ - 我们在 GCC 9 中有 C++20 范围库吗?

我们在新发布的GCC9中支持C++20范围库吗?我从以下位置复制了以下范围库的示例代码:https://en.cppreference.com/w/cpp/ranges#include#include#includeintmain(){std::vectorints{0,1,2,3,4,5};autoeven=[](inti){return0==i%2;};autosquare=[](inti){returni*i;};for(inti:ints|std::view::filter(even)|std::view::transform(square)){std::cout但是当使用g+

c++ - 为不同的输出目录生成 GCC 依赖项

我正在使用GCC生成依赖文件,但我的构建规则将输出放入子目录中。有没有办法告诉GCC将我的子目录前缀放在它为我生成的依赖文件中?gcc$(INCLUDES)-E-MM$(CFLAGS)$(SRC)>>$(DEP) 最佳答案 我假设您使用的是GNUMake和GCC。首先添加一个变量来保存您的依赖文件列表。假设您已经拥有一个列出我们所有来源的文件:SRCS=\main.c\foo.c\stuff/bar.cDEPS=$(SRCS:.c=.d)然后在makefile中包含生成的依赖:include$(DEPS)然后添加这个模式规则:#au

c++ - 为不同的输出目录生成 GCC 依赖项

我正在使用GCC生成依赖文件,但我的构建规则将输出放入子目录中。有没有办法告诉GCC将我的子目录前缀放在它为我生成的依赖文件中?gcc$(INCLUDES)-E-MM$(CFLAGS)$(SRC)>>$(DEP) 最佳答案 我假设您使用的是GNUMake和GCC。首先添加一个变量来保存您的依赖文件列表。假设您已经拥有一个列出我们所有来源的文件:SRCS=\main.c\foo.c\stuff/bar.cDEPS=$(SRCS:.c=.d)然后在makefile中包含生成的依赖:include$(DEPS)然后添加这个模式规则:#au

c++ - 到 std::function<R(ARGS...)> 的可变参数模板转换适用于 GCC 而不是 MSVC2013,为什么?

如果这是重复的,我很抱歉。但我在搜索中找不到任何内容。我可以使用c++11/c++14的任何最新功能。如有必要,我可以升级到VS2015。我正在尝试编写一个类,该类在分配时将自动转换为具有特定签名的std::function。我有适用于GCC的代码,但在MSVC2013上失败了。该代码是重新创建错误的片段。WTFMSVC?!我也知道这是有风险的代码,自动转换函数指针等,但它是用于插件库的私有(private)实现,我只想定义一次函数签名。如果有另一种方法可以编写代码,在main()中完成相同的功能并同时在两者上工作,我会全力以赴。GCCc++11工作正常-Demo#include#in

c++ - 到 std::function<R(ARGS...)> 的可变参数模板转换适用于 GCC 而不是 MSVC2013,为什么?

如果这是重复的,我很抱歉。但我在搜索中找不到任何内容。我可以使用c++11/c++14的任何最新功能。如有必要,我可以升级到VS2015。我正在尝试编写一个类,该类在分配时将自动转换为具有特定签名的std::function。我有适用于GCC的代码,但在MSVC2013上失败了。该代码是重新创建错误的片段。WTFMSVC?!我也知道这是有风险的代码,自动转换函数指针等,但它是用于插件库的私有(private)实现,我只想定义一次函数签名。如果有另一种方法可以编写代码,在main()中完成相同的功能并同时在两者上工作,我会全力以赴。GCCc++11工作正常-Demo#include#in

c++ - 可变参数模板作为模板参数 : deduction works with GCC but not with Clang

在使用GCC4.7.2和Clang3.1编译一些C++11代码时,我遇到了一个问题,即Clang无法推断出GCC成功的模板参数。在更抽象的形式中,代码如下所示:src/test.cc:structElement{};templatestructFirstContainer{};templatestructSecondContainer{};templateclassContainer>voidprocessOrdinary(Container/*elements*/){}templateclassContainer>voidprocessOrdinary(Container/*elem

c++ - 可变参数模板作为模板参数 : deduction works with GCC but not with Clang

在使用GCC4.7.2和Clang3.1编译一些C++11代码时,我遇到了一个问题,即Clang无法推断出GCC成功的模板参数。在更抽象的形式中,代码如下所示:src/test.cc:structElement{};templatestructFirstContainer{};templatestructSecondContainer{};templateclassContainer>voidprocessOrdinary(Container/*elements*/){}templateclassContainer>voidprocessOrdinary(Container/*elem

c++ - gcc -O0 在矩阵大小为 2 的幂(矩阵转置)上优于 -O3

(出于测试目的)我写了一个简单的方法来计算nxn矩阵的转置voidtranspose(constsize_t_n,double*_A){for(uinti=0;i当使用优化级别O3或Ofast时,我希望编译器展开一些循环,这将导致更高的性能,尤其是当矩阵大小是2的倍数时(即,每次迭代都可以执行双循环体)或类似情况。相反,我测量的结果恰恰相反。2的幂实际上显示了执行时间的显着峰值。这些尖峰也以64为固定间隔,以128为间隔更明显,依此类推。每个尖峰都延伸到相邻的矩阵大小,如下表所示sizentime(us)10202649102128151022310010235428102415791