日期:2014-05-16  浏览次数:20626 次

大侠,请解释一下这个编译问题,谢谢!
//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编译其他简单程序也能通过




------解决方案--------------------
头文件的问题吧,
------解决方案--------------------
头文件顺序有问题,改成下面试试:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

------解决方案--------------------
错了,是少了struct 关键字
------解决方案--------------------
#include <sys/socket.h>
有这个头文件,而且这个头文件是GCC编译器能找到的默认文件路径。。
所以在编译的时候不需要加-lsocket