编译时出错,有关extern C的问题? 求救

四十大度 2003-04-11 09:20:39
我在sun下编译一个C++程序时,遇到这样的错误:
CC -c -g -DNO_TK -DTCLCL_CLASSINSTVAR -DNDEBUG -D__svr4__ -DUSE_SHM -DHAVE_LIBTCLCL1_0B5 -DHAVE_TCLCL_H -DHAVE_LIBOTCL1_0A2 -DHAVE_OTCL_H -DHAVE_LIBTK8_0 -DHAVE_TK_H -DHAVE_LIBTCL8_0 -DHAVE_TCL_H -I. -I../TclCL -I../otcl -I../tkbox/include -I../tclbox/include -o rng.o rng.cc
"rng.cc", line 56: Error: Only one of a set of overloaded functions can be extern "C".
"rng.cc", line 61: Error: Only one of a set of overloaded functions can be extern "C".
2 Error(s) detected.
*** Error code 2
make: Fatal error: Command failed for target `rng.o'

rng.cc文件中的代码是这样的:
#if defined(sun)
extern "C" {
int atoi(...);
int gettimeofday(...);
}
#endif


请问这是怎么回事?我应该怎么修改?
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngS 2003-08-01
  • 打赏
  • 举报
回复
C语言里相同的函数名只能出现一个,你现在用C的方式在C++里导出了自定义的atoi(),就和C库里的atoi()发生了冲突,所以编译错误告诉你只能有一个能被extern "C"。
bluei 2003-08-01
  • 打赏
  • 举报
回复
int atoi(...)已经是函数库里定义的文件了,不能放入extern "C"块中。
其原因简而言之,就是在extern "C"块中的函数不能再出现重载的情况!
想想extern "C"是干什么地。:)

本人不知道你为什么要重载atoi(),修改的方法是改这个函数名称。
DavidBone 2003-04-16
  • 打赏
  • 举报
回复
up

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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