如果您有这样的事情:
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
中嵌入函数来实现这一目标?
答案 0 :(得分:2)
这取决于链接器,死代码对链接器的具体要求是什么。
您还应该在#if
下包含函数定义,以确保它不会导致机器代码。
答案 1 :(得分:1)
这取决于优化级别。在linux上你可以自己检查一下
readelf -s ./a.out | grep func2
但我认为您使用的是Windows,因此您需要一些类似的工具http://www.pe-explorer.com/。
以下是工具列表:Any tool/software in windows for viewing ELF file format?
答案 2 :(得分:1)
您还需要在#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
希望它有所帮助。谢谢!