小编use*_*005的帖子

安静 Visual Studio 的 cl.exe

从命令行编译cl.exe时,源文件的名称由编译器打印:

c:\bar> cl /nologo foo.cpp
foo.cpp
Run Code Online (Sandbox Code Playgroud)

是否可以要求cl.exe不打印不相关的信息?

此处的测试套件cl.exe使用任意源文件名调用,如果cl在没有要发出的诊断信息时保持沉默,那就太好了。

command-line visual-studio-2010 visual-studio visual-c++

6
推荐指数
0
解决办法
648
查看次数

clang:折叠表达式和"表达结果未使用"警告

在clang 7.0上这段代码:

template <typename ... Ts> struct S {
  unsigned gs(unsigned i) {
    unsigned r = 0;
    ((r = unsigned(sizeof(Ts)), i-- == 0) || ...);
    return r;
  }
};

int foo(unsigned i) {
  S<int, double, long, float, char> s;
  return s.gs(3);
}
Run Code Online (Sandbox Code Playgroud)

导致此警告:

~/dev/ta $ ~/bin/clang++ -c -std=c++17 fold-warning.cpp 
fold-warning.cpp:5:46: warning: expression result unused [-Wunused-value]
    ((r = unsigned(sizeof(Ts)), i-- == 0) || ...);
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    ^
Run Code Online (Sandbox Code Playgroud)

为什么?编译器的逻辑是什么表达式未被使用?

Gcc 7.3/8.2很满意.

c++ templates variadic-templates clang++ c++17

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