LinuxSir.cn,穿越时空的Linuxsir!

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

下面的这段代码编译怎么是错误的?

[复制链接]
发表于 2006-9-20 20:49:52 | 显示全部楼层 |阅读模式
unsigned eflags;
        asm volatile("
                jmp        1f
        1:        jmp        1f
        1:        jmp        1f
        1:        pushfl
                jmp        1f
        1:        jmp        1f
        1:        jmp        1f
        1:        popl %0" : "=r" (eflags));
好像要在每行的后面加\才行。
不过有没有办法不做任何修改能顺利通过编译?
发表于 2006-9-24 18:49:54 | 显示全部楼层
1. 每行后面加的应该是 \n\
2. 不做修改,没有办法通过编译,除非你改编译器,让编译器能够认识他
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-24 20:39:37 | 显示全部楼层
可这个是oskit中的代码
难道说oskit不能用gcc编译的?
回复 支持 反对

使用道具 举报

发表于 2006-9-24 22:05:35 | 显示全部楼层
确实应该有某种方法或者 gcc 版本 (别告诉我是 RH 修改过的版本) 支持这种写法, 以前在编译某些程序的时候见到过这个错误. 如果不是特殊的 gcc 版本, 而是编译参数的话, 但愿有人可以出来解答.

一般来说, 使用多行字符串最好使用如下的格式

  1. char sa[] = "abc\
  2. dsflk\
  3. sdfkl";

  4. char sb[] = "abc"
  5. "sdlkf"
  6. "asdfl";
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-25 00:36:18 | 显示全部楼层

不过oskit里的这种格式我似乎以前也见到过。
回复 支持 反对

使用道具 举报

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

本版积分规则

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