大侠,请解释一下这个编译问题,谢谢!
//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