预期返回的指针不完整

问题描述 投票:0回答:0

我正在用 C 编写一个实体组件系统,我编写了一个宏来定义一个函数来将每个组件添加到任何实体。宏如下:

#define EntityAddComponent(type)    \
    type* EntityAdd##type(char* entname ,type* ComponentList){ \
        int h = hashName(entname); \
        memcpy(ComponentList[h].entName,entname,8); \
        return ComponentList+h; \
    }

entname
是实体的名称。
ComponentList
是一个数组,记录了该类型的每个组件。该函数将实体的名称写入新组件并返回指向该组件的指针。 然后使用宏创建多个函数:

EntityAddComponent(SpriteComponent);
EntityAddComponent(CollisionComponent);
EntityAddComponent(PhysicsComponent);

我使用

EntityAddSpriteComponent
但它根据
gdb
返回一个指向不可访问内存的指针。 我用
gdb
做了一些调试,发现函数返回的指针并非完全不正确:

我期待的实际指针是

0x55555555c13c
.

EntityAddSpriteComponent
返回的指针是
0x5555c13c
.

c pointers macros entity-component-system
© www.soinside.com 2019 - 2024. All rights reserved.