c++ - g++ 不显示 'unused' 警告

标签 c++ g++

我有一小段 C++ 代码:

#include <iostream>
#include <iterator>
#include <string>

using namespace std;

int main() {

    int i=0;
    istream_iterator<string> EOS;
    double x;

    return 0;
}

现在我用我的 g++ (GCC) 4.4.4 编译它

g++ -W -Wall -pedantic test.cc -o test

得到:

test.cc: In function 'int main()':
test.cc:9: warning: unused variable 'i'
test.cc:11: warning: unused variable 'x'

为什么未使用的 EOS 没有警告?

最佳答案

它不是原始值,因此它的构造函数和/或析构函数可能具有预期的副作用。

为了说明这在实践中发生:我使用一个类来对代码段进行计时,大致如下:

class Timed {
    double start;
    public:
        Timed() { start = now(); }
        ~Timed() { std::cout << (now() - start) << '\n'; }
}

所以要衡量一个函数需要多长时间,我只是这样做:

void slow() {
    Timed t;
    // heavy operation here...
}

变量 t 永远不会被使用,但它对代码的行为仍然很重要。

关于c++ - g++ 不显示 'unused' 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302848/

相关文章:

c++ - 无法将短裤复制到动态数组 C++

c++ - gcc/g++ 可以在忽略我的寄存器时告诉我吗?

c++ - 使用 Cmake 链接 libusb 时遇到问题

c++ - 您如何存储体素数据?

c++ - 从一个不再存在的函数创建的 lambda 的内部框架修改 via 闭包中的变量是否安全

C++ 正确读取 Unicode 字符可能大于一个字节的文件

c++ - 在//C++ 注释中使用\\是否合法? (C++ 注释中的 LaTeX 方程)

c++ - 如何使GCC(C++)停止简化算术表达式?

c++ - 手动代码中带有 C++20 __VA_OPT__ 错误的类函数宏

java - 我如何在 Java 或 C++ 中表示 128 位整数?