Tom*_*mas 24 c struct compare assign
虽然我是一名长期的C程序员,但我最近才知道可以直接将结构变量分配给另一个而不是使用memcpy:
struct MyStruct a,b;
...
a = b; /* implicit memcpy */
Run Code Online (Sandbox Code Playgroud)
虽然这对于C感觉有点"高级",但它绝对有用.但为什么我不能做平等和不平等比较:
if (a == b) ...
if (a != b) ...
Run Code Online (Sandbox Code Playgroud)
标准是否有任何理由排除这种情况?或者这是一个不一致的 - 否则非常优雅 - 标准?
我不明白为什么我可以替换我的memcpy用于干净的任务,但我必须保持那些丑陋的memcmp到位.
Jon*_*erg 27
编译器没有很好的方法来实现结构比较(即支持结构的==运算符),这与C的低级风格一致.一个简单的逐字节比较可以在结构中未使用的"孔"中存在的随机位上创建(这种填充用于保持后面字段的对齐正确).对于大型结构,逐场比较可能需要不可接受的重复代码量.在任何情况下,都不能期望任何编译器生成的比较适当地比较指针字段:例如,将char*字段与strcmp而不是==进行比较通常是合适的.
如果您需要比较两个结构,则必须逐个字段地编写自己的函数.
归档时间: |
|
查看次数: |
3165 次 |
最近记录: |