使用 c 头文件时,是否需要将 "struct" 放在 c++ 中的结构实例前面?
Is it required to place "struct" in front of a struct instance in c++ when you use c header files?
我正在学习如何进行套接字编程,并尝试重新创建c程序的功能: https://beej.us/guide/bgnet/examples/showip.c
在c++
(因为我更喜欢 c++ 并且它是我打算实现的语言),它使用标头:
stdio.h
string.h
sys/types.h
sys/socket.h
netdb.h
arpa/inet.h
netinet/in.h
我在代码中用iostream
替换了stdio.h
,用cstring
替换了string.h
。
我基本上在他的程序中逐行键入代码,阅读文档,尝试理解每个函数和结构。我知道在 c++ 中不需要(如在 c 中)在结构体实例之前加上struct
关键字,所以在他的代码中任何有对结构体的引用的地方,我只是省略了它。
在编译中,netinet/in.h 中的所有结构都是未定义的!经过一段时间的故障排除和各种错误,我只是下载了他的程序源代码,并确保它不是我的标准库的问题(Cygwin 是有问题的?像魅力一样工作,但我仍然想要 c++。
我把stdio
所有的东西都改成了iostream
,用g++
而不是gcc
编译了它,它仍然有效!唯一不同的是在addrinfo和其他结构体前面有struct
。
使用 c 头文件时,是否需要将struct
放在 c++ 中的结构实例前面?
即使您在程序中使用了所有C
内容(标头),如果文件以扩展名结尾,则在一天结束时,它会被系统识别为C++
源.cpp
。因此,只要源文件是C++
源文件,就不需要在每个struct
实例前面放置struct,则它不应显示任何编译错误。
这意味着"否"作为您问题的答案。
编辑:正如@JesperJuhl指出的那样,这并不总是正确的。异常发生在AiX,VMS,Novell NetWare,DOS系统上。在这种情况下,您需要在每个实例之前使用struct
关键字。
"在 c++ 中是否需要将"struct"放在结构实例的前面" -一般来说;不,那是C主义。不过,例外确实存在。
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 将非平凡的项目放在多集中
- 为什么我不应该把所有东西都放在标题中?
- 我可以使用任何好的逻辑来阻止计算机将 O 放在井字游戏中的现有 X 上
- 如何将多种语言设置放在单个 .clang 格式文件中
- 我应该将外部标头放在 .h 文件还是.cpp文件中?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何将模板和非模板函数放在一个文件中
- 将实时(非静态)放在qt(c ++)上
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 如何在 c++ 中将图标放在按钮上?
- 将一个类的对象放在另一个类的数组中
- 我应该C++自定义异常代码放在哪里?
- 如何在 2d 矢量 c++ 中复制元素并将其放在原始元素旁边
- 将函数指针和对象放在一起
- 为什么要将函数声明和定义放在单独的文件中
- 将数据放在私有类中是否理想?(C++)
- 删除的 [] 应该放在哪里?
- 如何输入数组的元素,每次获得新元素时,我们将其放在数组的中间?