关于BCB内嵌汇编的问题(Bcb60以前版本可以通过,但Bcb60不行)

Ykang 2003-08-25 03:05:57
下面这段程序在Bcb60(Sp4)以前的版本中可以编译通过(包括BCb50,bcb40以及Bc502);所以请教各位大侠BCB的内联汇编的规范,由于本人E文不好啊,最好是中文资料啊

#include <stdio.h>


//---------------------------------------------------------------------------
void Test()
{
printf("\nTest is called");
}

#pragma argsused
int main(int argc, char* argv[])
{
asm
{
push offset label;

push offset _Test;
ret ;

label:

}

return 0;
}
...全文
94 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2003-08-26
  • 打赏
  • 举报
回复
我的结果:
E:\temp>bcc32 -B bcasm.c
Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
bcasm.c:
Turbo Assembler Version 5.3 Copyright (c) 1988, 2000 Inprise Corporation

Assembling file: bcasm.ASM
Error messages: None
Warning messages: None
Passes: 1

Turbo Incremental Link 5.64 Copyright (c) 1997-2002 Borland

E:\temp>bcasm

Test is called
E:\temp>
柯本 2003-08-26
  • 打赏
  • 举报
回复
忘了还有要在头上加上
#pragma inline
或在命令行用
bcc32 -B 选项
柯本 2003-08-26
  • 打赏
  • 举报
回复
我是通过的,很可能是你编译器的选项错了
查project->options->C++->force C++ compile
前面不能有勾!
Behard 2003-08-26
  • 打赏
  • 举报
回复
这样试一试
void _Test()
......


label: ;
Ykang 2003-08-25
  • 打赏
  • 举报
回复
keiy():
老兄,你说的C方式是什么??我的文件保存的的是C文件,不是Cpp,并且我在工程向导里选的也是C,但编译就说label,_test没有声明
柯本 2003-08-25
  • 打赏
  • 举报
回复
---这段程序在Bcb60(Sp4)以前的版本中可以编译通过(包括BCb50,bcb40以及Bc502)---
我试过,不能用C++方式编译,用C方式在所有版本没问题;
用C++方式,每个版本都有问题!!!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧