struct关键字在C和C++中使用时的一点区别
2012-02-02 12:44
288 查看
很多同学在初学socket编程的时候,编译书上的第一个例子程序都会遇到这样一个问题,明明头文件都包含了,为什么编译总是报错:
'sockaddr_in' undeclared
'sockaddr' undeclared.
原因如下:
如果用gcc client.c -o client -Wall编译,则
struct sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(struct sockaddr_in));
connect(sockfd, (struct sockaddr)&sockAddr, sizeof(sockAddr));
这3个地方的struct关键字都不能省略,否则编译报错说没有声明。
如果用g++ client.c -o client -Wall编译,则这3个地方的struct关键字都可以省略。
因为g++命令与gcc -libstdc++等效,所以我判断这个区别不是编译器造成的,而是C和C++语言的细小差别。
C++设计的一个目标就是自定义类可以像内置类型一样使用,在使用自定义类型时关键字class和struct是可以省略的。
'sockaddr_in' undeclared
'sockaddr' undeclared.
原因如下:
如果用gcc client.c -o client -Wall编译,则
struct sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(struct sockaddr_in));
connect(sockfd, (struct sockaddr)&sockAddr, sizeof(sockAddr));
这3个地方的struct关键字都不能省略,否则编译报错说没有声明。
如果用g++ client.c -o client -Wall编译,则这3个地方的struct关键字都可以省略。
因为g++命令与gcc -libstdc++等效,所以我判断这个区别不是编译器造成的,而是C和C++语言的细小差别。
C++设计的一个目标就是自定义类可以像内置类型一样使用,在使用自定义类型时关键字class和struct是可以省略的。
相关文章推荐
- C与C++中struct使用的区别
- C# struct 与class 使用 new 关键字的区别
- C++中关键字Struct和Class的区别
- C与C++中struct使用的区别
- C和C++中struct使用的区别
- c和c++中使用结构体的一点区别
- C++使用new和不使用new关键字实例化对象的区别
- C++中struct和class关键字的三个区别
- c和c++中使用结构体的一点区别
- C和C++中使用结构体的一点区别
- c++类型转换关键字dynamic_cast和static_cast的使用区别
- c++中使用const关键字的联系区别
- C++中使用class和struct关键字的不同
- C++中struct和class关键字的区别
- C++中class与struct的区别
- 黄聪:c# override,new关键字区别与使用(学习笔记)
- C和C++中struct区别
- 《算法笔记》2.8小节——C/C++快速入门->结构体(struct)的使用
- C++中class和struct的区别
- [C\C++]基本问题1——C++中struct和class的区别