LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1563|回复: 15

有个gcc优化的问题

[复制链接]
发表于 2005-8-19 12:12:28 | 显示全部楼层 |阅读模式
如下的代码会被无情的优化掉

  1. if(0)
  2. {
  3.     // some code maybe we will jump here
  4. }
复制代码


有没有什么编译选项可以使之不被优化掉?
发表于 2005-8-19 13:10:07 | 显示全部楼层
写成函数不行么?
回复 支持 反对

使用道具 举报

发表于 2005-8-19 13:22:10 | 显示全部楼层
都if(0)了,还怎么进入呀?
回复 支持 反对

使用道具 举报

发表于 2005-8-19 13:42:44 | 显示全部楼层
Post by youbest
都if(0)了,还怎么进入呀?

楼主肯定是要goto进入。
回复 支持 反对

使用道具 举报

发表于 2005-8-19 14:27:10 | 显示全部楼层

  1. if (0)
  2. {
  3.     func();
  4. }

  5. void func();
  6. {
  7. .......//some code maybe we will jump here
  8. }

复制代码

这样?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-19 17:32:17 | 显示全部楼层
Post by lollipop

  1. if (0)
  2. {
  3.     func();
  4. }

  5. void func();
  6. {
  7. .......//some code maybe we will jump here
  8. }

复制代码

这样?

呵呵,这样是不行的。
if 代码段依然会被优化掉的,think about it
回复 支持 反对

使用道具 举报

发表于 2005-8-19 17:49:33 | 显示全部楼层
我是说
  1. if(0)
  2. {
  3. [color=red]  代码[/color]
  4. }
复制代码

中的"代码"放到一个函数中,再把goto语句改成call 函数名
回复 支持 反对

使用道具 举报

发表于 2005-8-19 18:22:48 | 显示全部楼层
Post by gradetwo
楼主肯定是要goto进入。


  1. #include <stdio.h>

  2. int main(int argc, char *argv[])
  3. {
  4.         if (0) {
  5. hello:
  6.                 printf("Hello World\n");
  7.                 return 0;
  8.         }
  9.         goto hello;
  10. }
复制代码

       
可以用的,gcc可不是一般的聪明.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-19 19:32:39 | 显示全部楼层
Post by daemeon

  1. #include <stdio.h>

  2. int main(int argc, char *argv[])
  3. {
  4.         if (0) {
  5. hello:
  6.                 printf("Hello World\n");
  7.                 return 0;
  8.         }
  9.         goto hello;
  10. }
复制代码

       
可以用的,gcc可不是一般的聪明.

呵呵,确实很聪明啊
不过我需要的类似于下面这样的代码不被优化掉:

  1. if(0)
  2. {
  3.     __asm__("__here:");
  4. }

  5. __asm__("jmp __here");
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-19 19:33:58 | 显示全部楼层
Post by jiangn
我是说
  1. if(0)
  2. {
  3. [color=red]  代码[/color]
  4. }
复制代码

中的"代码"放到一个函数中,再把goto语句改成call 函数名

呵呵,给你加个约束,不能使用函数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表