未调用的静态 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 以太 func
或 func2
将从运行时代码中删除是否合理?
或者我是否还需要将函数嵌入 #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
希望对您有所帮助。谢谢!
如果你有这样的事情:
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 以太 func
或 func2
将从运行时代码中删除是否合理?
或者我是否还需要将函数嵌入 #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
希望对您有所帮助。谢谢!