电子说
编译器如gcc,可以指定不同的优化参数,在某些条件下,有些函数可能会被优化掉。
先写一个简单的测试文件:
用命令
gcc -g -c test.c
编译成目标文件。
用 nm检查函数符号:
$ nm -C test.o
00000000 T foo
现在使用 命令
gcc -g -c -O2 test.c
重新编译。
再用 nm检查:
$ nm -C test.o
00000000 T foo
还是能找到函数 foo.
这表明foo没有被优化掉
现在把函数 foo改成静态函数:
使用 -O2编译,然后用 nm查找,会发现,此时 foo符号找不到了。
可见,静态函数有可能会被GCC优化掉。
全部0条评论
快来发表一下你的评论吧 !