当前位置:  开发笔记 > 编程语言 > 正文

如果T'是不完整类型,是否将T指针转换为T'指针并返回产生原始指针?

如何解决《如果T'是不完整类型,是否将T指针转换为T'指针并返回产生原始指针?》经验,为你挑选了0个好方法。

请考虑以下代码片段,该片段是根据Tor源代码改编的:

/* This can be a malloc wrapper with minimal initialization. */
other_t *make_other(void);

/* This struct is never defined. */
struct undef;
typedef struct undef undef_t;

undef_t *make_undef(void)
{
    other_t *other = make_other();
    return (undef_t*)other;
}

假设undef_t程序中的所有指针都是铸造other_t指针,并进一步假设所有程序在使用之前undef_t*将它们转换为铸造指针other_t*.

根据C99标准的第6.3.2.3节,return如果other未正确对齐,则语句中的强制转换会调用未定义的行为undef_t,但如果,则将make_undef返回的结果转换为other_t*生成返回的原始指针make_other.但是,undef_t是一个未定义的类型,我找不到任何关于这些的对齐规则.这些转换是否仍然像undef_t定义的那样有效并且具有正确的对齐方式?

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有