相关疑难解决方法(0)

正则表达式:忽略区分大小写

如何使以下正则表达式忽略区分大小写?它应匹配所有正确的字符,但忽略它们是低级还是大写.

G[a-b].*
Run Code Online (Sandbox Code Playgroud)

regex

268
推荐指数
9
解决办法
59万
查看次数

[[maybe_unused]] 在成员变量上,GCC 警告(错误地?)该属性被忽略

在以下示例中

struct Foo {
    [[maybe_unused]] int member = 1;
    void bar() {
        [[maybe_unused]] int local = 0;
    }
};

int main(int argc, char* argv[]) {
    Foo f{};
    f.bar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

GCC 发出警告,其中 Clang 和 MSVC 没有:

warning: 'maybe_unused' attribute ignored [-Wattributes]
     [[maybe_unused]] int member = 1;
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该是合法的(并且不会被编译器忽略)。根据标准

10.6.7 可能未使用的属性 [dcl.attr.unused]
...
2. 该属性可以应用于类的声明、typedef-name、变量、非静态数据成员、函数、枚举,或枚举器。
...

我讨厌在“编译器错误”锤子上摇摆不定,但我不确定在这种情况下还有什么可能。

有没有人有任何见解?

c++ compiler-warnings compiler-bug c++17

12
推荐指数
2
解决办法
3223
查看次数

如何告诉Clang不要假装成其他编译器?

我过去遇到过这个问题:LLVM定义__GNUC__,但它不能消耗GCC可以的程序.我在Windows上再次遇到它:LLVM定义_MSC_VER,但它不能使用VC++可以使用的相同程序.加重的事情(对我来说)是我们有LLVM Clang和Apple Clang的特殊代码路径(由于不同的版本方案而定义不同),我们必须与该工具对抗以使其使用它们.

我们如何告诉Clang不要假装成其他编译器?有没有开关或选项吗?


Clang文档讨论了不需要的MS行为,但他们没有说如何阻止它:

为了与使用MSVC编译的现有代码兼容,clang定义了_MSC_VER和_MSC_FULL_VER宏.这些默认值分别为1800和180000000,使得clang看起来像Visual C++ 2013的早期版本.-fms-compatibility-version = flag会覆盖这些值.它接受虚线版本元组,例如19.00.23506.更改MSVC兼容性版本使clang表现得更像MSVC版本.例如,-fms-compatibility-version = 19将启用C++ 14功能,并将char16_t和char32_t定义为内置类型.

gcc llvm clang visual-c++

9
推荐指数
3
解决办法
1536
查看次数

如何检查 cmake 使用的是什么编译器?

我很惊讶我找不到这个谷歌搜索。我只找到了这个,但我想知道如何找到 cmake 通常使用的编译器?我也发现了这个,但我假设 cmake 中有一些变量只包含编译器名称,对吗?

c++ cmake

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

如何为clang和gcc编写makefile?

我想std::experimental::filesystem在我的代码中使用,这要求我使用-lstdc++fsGCC和-lc++experimentalClang 进行编译。目前,我有一个makefilemakefile.clang反映了编译方面的差异,或者,我考虑过使用clang构建目标,以便可以运行build clang

有一些规范的方法可以在Makefile中设置特定于编译器的标志吗?

c++ makefile gnu-make

7
推荐指数
1
解决办法
2695
查看次数

带有操作系统相关编译器的 makefile

我有一组 C 程序,通常在 makefile 中使用 gcc 进行编译,但 OSX Mavericks 现在使用 clang。在 makefile 中测试现有编译器并使用适当的编译器的好方法是什么?此外,我还想使用依赖于体系结构的优化标志(例如,对于 Linux 上的 gcc,我将使用 -O3,但在 OSX 上我将使用 -fast;对于 OSX 上的 clang,我将使用 -Ofast)。

最诚挚的感谢,

瑞安

c compiler-construction macos makefile osx-mavericks

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