小编Via*_*rus的帖子

合并和/或覆盖 CMakePresets.json 中不同配置预设的标志

我的 CMakePresets.json 中有两个配置预设,我想将继承 configurePresets (gcc) 的标志与另一个预设 (gcc-arm-embedded) 合并

这是一个简化版本:

  "configurePresets": [
    {
      "name": "gcc",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS": "-Wall -Wextra",
        "CMAKE_BUILD_TYPE": "Release"
      }
    },
    {
      "name": "gcc-arm-embedded",
      "hidden": true,
      "inherits": ["gcc"],
      "cacheVariables": {
        "CMAKE_CXX_FLAGS": "-ffunction-sections -fdata-sections",
        "CMAKE_EXE_LINKER_FLAGS": "-mcpu=cortex-m7 -mthumb",
        "CMAKE_BUILD_TYPE": "MinSizeRel"
      }
    },
    {
      "name": "embedded",
      "inherits": ["gcc", "gcc-arm-embedded"]
    }
  ]
Run Code Online (Sandbox Code Playgroud)

问题是,如果我使用预设,embedded生成的 CMAKE 标志为:

CMAKE_CXX_FLAGS: "-Wall -Wextra"
CMAKE_EXE_LINKER_FLAGS: "-mcpu=cortex-m7 -mthumb",
CMAKE_BUILD_TYPE: "Release"
Run Code Online (Sandbox Code Playgroud)

我的目标是这样的:

CMAKE_CXX_FLAGS: "-Wall -Wextra -ffunction-sections -fdata-sections"
CMAKE_EXE_LINKER_FLAGS: "-mcpu=cortex-m7 -mthumb",
CMAKE_BUILD_TYPE: "MinSizeRel"
Run Code Online (Sandbox Code Playgroud)

这可以通过 CMakePresets 实现吗?

c++ cmake cmake-presets

3
推荐指数
1
解决办法
1371
查看次数

在循环中对向量进行排序

有时我非常喜欢c ++,有时会陷入我不理解的事情中.我想在向量中的向量中对值进行排序.

工作原理:

for (unsigned int i = 0; i < myVectors.size(); i++) {
    sort(myVectors[i].begin(), myVectors[i].end());
}
Run Code Online (Sandbox Code Playgroud)

什么行不通:

for (unsigned int i = 0; i < myVectors.size(); i++) {
    vector<int> vec = myVectors[i];
    sort(vec.begin(), vec.end());
}
Run Code Online (Sandbox Code Playgroud)

和:

for (auto vec : myVectors) {
    sort(vec.begin(), vec.end());
}
Run Code Online (Sandbox Code Playgroud)

最后两个不起作用,我不知道为什么

我在用mingw64, c++11;

这是完整的例子:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    cout << "i  vec1   vec2" << endl;
    for (int i = 0; i < 3; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ sorting gcc mingw vector

2
推荐指数
1
解决办法
1290
查看次数

std :: regex忽略regex命令中的空格

我们可以格式化带有空格/换行符的std :: regex字符串吗?它会被忽略-只是为了更好地阅读?有没有像Python VERBOSE一样可用的选项?

不冗长:

charref = re.compile("&#(0[0-7]+"
                     "|[0-9]+"
                     "|x[0-9a-fA-F]+);")
Run Code Online (Sandbox Code Playgroud)

冗长:

charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)
Run Code Online (Sandbox Code Playgroud)

c++ regex verbose c++11

1
推荐指数
2
解决办法
556
查看次数

Memcpy vs Memmove - 调试与发布

我的x64多线程应用程序的行为非常奇怪.调试模式下的执行时间比发布模式下的执行时间快.

我打破了问题并找到了问题:调试模式优化(!注意优化已关闭!)memmpy memmove,它更快地执行.释放模式仍然使用memcpy(!note optimition on).

此问题在发布模式下减慢了我的多线程应用程序.:(

有人有什么想法?

#include <time.h>
#include <iostream>

#define T_SIZE 1024*1024*2

int main()
{
    clock_t start, end;

    char data[T_SIZE];
    char store[100][T_SIZE];

    start = clock();
    for (int i = 0; i < 4000; i++) {
        memcpy(store[i % 100], data, T_SIZE);
    }
    // Debug > Release Time 1040 < 1620
    printf("memcpy: %d\n", clock() - start);

    start = clock();
    for (int i = 0; i < 4000; i++) {
        memmove(store[i % 100], data, T_SIZE);
    }
    // Debug > Release Time …
Run Code Online (Sandbox Code Playgroud)

c++ debugging release visual-studio c++11

0
推荐指数
1
解决办法
1090
查看次数