为什么cc编译通过而CC编译通不过

Dlf 2002-03-07 05:41:27
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>

int main()
{
int fd = shm_open("/SCADA", O_RDWR | O_CREAT, (mode_t)0x740);
if(fd < 0)
return -1;

ftruncate(fd, 1024);
void* ptr = mmap(NULL, 1024, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

}
/*
[sunwsa]CC shm.cpp -o shm -lrt
"shm.cpp", line 7: Error: The function "shm_open" must have a prototype.
1 Error(s) detected.
[sunwsa]
*/
用cc编译通过,CC编译出现上述错误,why?
环境:Sun solaris 7
...全文
61 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dlf 2002-03-08
  • 打赏
  • 举报
回复
对cc是c编译器,CC是 c++编译器.
将程序改为C程序,用cc编译可以的
而CC编译不行,为什么?
minipuss 2002-03-08
  • 打赏
  • 举报
回复
cc和CC不是同一个编译器,内部构造不同,因而对源程序要求不同,所以出现上述情况!!!
九道咨询 2002-03-08
  • 打赏
  • 举报
回复
我觉得也是sr71(荒唐)说的原因,应该是 shm_open在头文件中没有严格按照原型定义,你可能还有修改一下其头文件的定义(我想原来的头文件定义不是按照标准方式定义的)
柯本 2002-03-08
  • 打赏
  • 举报
回复
sr71(荒唐) 说的对
littdon 2002-03-08
  • 打赏
  • 举报
回复
你的文件的后缀是 c 还是 C?
CC要求后缀是C.
sr71 2002-03-08
  • 打赏
  • 举报
回复
因为C++会对函数原型强制检查,C++编译器比C严格.
去查出shm_open所在的头文件,include it.
xboy 2002-03-07
  • 打赏
  • 举报
回复
那一定是头文件的问题了吧!
潘李亮 2002-03-07
  • 打赏
  • 举报
回复
CC /cc
有CC吗?
scklotz 2002-03-07
  • 打赏
  • 举报
回复
据我所知,好象它们是不同的编译器,一个是c编译器,一个是 c++编译器。
你可以看看他们具体在那里,好象是一个链接文件来实现的。

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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