未调用的静态 c 函数会发生什么

what happens to a static c function that is not called

如果你有这样的事情:

int _tmain(int argc, _TCHAR* argv[]) {
    int i;
#if (num>99)
    i = func();
#else
    i= func2();
#endif
    return 0;
}

static int func()
{
    return 1;
}
static int func2()
{
    return 2;
}

根据 num 大于还是小于 99 以太 funcfunc2 将从运行时代码中删除是否合理?

或者我是否还需要将函数嵌入 #if 以实现此目标?

这取决于链接器,死代码的作用是特定于链接器的。 您还应该在 #if 下包含函数定义,以确保它不会生成机器代码。

这取决于优化级别。在 linux 你可以自己检查 readelf -s ./a.out | grep func2

但我认为你使用 windows,所以你需要一些类似的工具 http://www.pe-explorer.com/ 例如。

这是工具列表:Any tool/software in windows for viewing ELF file format?

您还需要将函数定义嵌入 #if 中才能实现目标。

代码可能是这样的:

假设变量 "num" 正在填充表单配置。

int _tmain(int argc, _TCHAR* argv[]) {
    int i;
#if (num>99)
    i = func();
#else
    i= func2();
#endif
    return 0;
}

#if(num>99)
static int func()
{
    return 1;
}
#else
static int func2()
{
    return 2;
}
#endif

希望对您有所帮助。谢谢!