关于 static 函数
  • 板块学术版
  • 楼主bobou
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/11/12 21:37
  • 上次更新2023/10/27 03:11:13
查看原帖
关于 static 函数
428877
bobou楼主2022/11/12 21:37

看下面的代码:

#include <iostream>

int add(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }

int main() {
    int a, b; std::cin >> a >> b;
    std::cout << add(a, b) << std::endl;
    return 0;
}

很显然 mul 是没有用到的。用 g++ .\test.cpp -o .\test.exe -std=c++14 -Wall -Wextra,并没有任何警告。

但是如果我将两个函数的声明都加上 static,即

static int add(...) { ... }
static int mul(...) { ... }

使用同样的编译命令编译,就会出现 -Wunused-function 警告。警告内容是这样的:

.\test.cpp:4:12: warning: 'int mul(int, int)' defined but not used [-Wunused-function]
 static int mul(int a, int b) { return a * b; }
            ^~~

所以说:

  1. 为什么会这样?
  2. 有的时候,我会遇到自己定义的函数忘记调用的情况。通过将所有函数定义为 static 函数并开启 -Wall -Wextra 会不会对程序的运行结果或者效率有影响?
2022/11/12 21:37
加载中...