大侠,请解释一下这个编译问题,谢谢!

Yao-debo 2007-07-18 04:43:59
//source code -- server.c
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

int main(int argc, char *argv[])
{
int nCount;
nCount = sizeof(sockaddr);
printf("%d\n",nCount);
nCount = sizeof(sockaddr_in);
printf("%d\n",nCount);
}

说明:平台:ubuntu 7.04 desktop; gcc 版本 4.1.2
命令行: gcc -o server ./server.c -lsocket -lnsl
或 gcc -o server ./server.c -lsocket
提示:
sockaddr’ 未声明
sockaddr_in’ 未声明

命令行:g++ -o server ./server.c 编译通过

问题是,gcc编译时有什么问题吗?gcc编译其他简单程序也能通过



...全文
207 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jufeng2309 2007-07-19
  • 打赏
  • 举报
回复
#include <sys/socket.h>
有这个头文件,而且这个头文件是GCC编译器能找到的默认文件路径。。
所以在编译的时候不需要加-lsocket
Yao-debo 2007-07-18
  • 打赏
  • 举报
回复
#include <netinet/in.h> 据说在有的版本里,不需要这句?
Yao-debo 2007-07-18
  • 打赏
  • 举报
回复
楼上正解!谢谢解答
而且,这样就能通过编译
gcc -o server ./server.c

问题补充,为什么不用加 -lsocket ?
mymtom 2007-07-18
  • 打赏
  • 举报
回复
错了,是少了struct 关键字
mymtom 2007-07-18
  • 打赏
  • 举报
回复
头文件顺序有问题,改成下面试试:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
rzsheng 2007-07-18
  • 打赏
  • 举报
回复
头文件的问题吧,

23,117

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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