免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2614 | 回复: 6
打印 上一主题 下一主题

[C++] 奇怪的Visual C++出错信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-16 18:19 |只看该作者 |倒序浏览
我在编写一个程序时使用了一个函数,
函数定义为:
void makeTable(char *table[], int &size)
主函数中函数调用为:
char *tab1[60];
int si;
cin>;>;si;
makeTable(tab1,si);

运行时函数输出结果正常,但返回主函数时会显示如下出错信息:

The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

请问什麽是ESP, 函数的调用协议和函数指针的调用协议是什麽?这个问题又该如何解决?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-09-16 18:22 |只看该作者

奇怪的Visual C++出错信息

》》char *table[]

table里面的数据怎么存放的?

论坛徽章:
0
3 [报告]
发表于 2004-09-16 18:28 |只看该作者

奇怪的Visual C++出错信息

>;>;calling convention
调用约定??

void makeTable(char *table[], int &size) 是别人写的函数吗?
如果是的话,按照错误提示,我觉得可能是c++ 和 c 混合编程的问题,
你在声明和使用的时候加上
#ifdef __CPLUSPLUS
extern "C"{
#endif

#ifdef __CPLUSPLUS
}
#endif

试试。

论坛徽章:
0
4 [报告]
发表于 2004-09-16 18:31 |只看该作者

奇怪的Visual C++出错信息

table中的数据是读取用户输入的字符串后,从中挑出符合要求的,申请一个动态空间,使指针table指向该动态空间,再将该字符串放入该动态空间中.
table=new char[80];
strcpy(table,s);  //s为符合要求的字符串

论坛徽章:
0
5 [报告]
发表于 2004-09-20 18:18 |只看该作者

奇怪的Visual C++出错信息

函数是我自己编的,用的都是c++.
我已经觉得是系统变态了!!

论坛徽章:
0
6 [报告]
发表于 2004-09-20 19:02 |只看该作者

奇怪的Visual C++出错信息

有给这点代码实在是很难看出问题呀....

论坛徽章:
0
7 [报告]
发表于 2004-09-23 17:22 |只看该作者

奇怪的Visual C++出错信息

问题已解决,是我在函数中设置的一个字符串数组的问题,
char s[80];
在之后的操作中,错误的加了一句:
s[80]='\0';
在返回主函数的时候就出问题了.
将该句去掉就可以了,应该是数组下标溢出,在返回主函数时导致数据值丢失.
是这个问题吧??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP