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

lst*_*nme 5 c linker compilation

如果你有这样的事情:

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;
}
Run Code Online (Sandbox Code Playgroud)

是否合理期望取决于if num是大于还是小于99以太funcfunc2将从运行时代码中删除?

或者我是否还需要将功能嵌入#if到实现此目标中?

Vag*_*ish 2

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