【发布时间】:2013-08-21 10:23:32
【问题描述】:
在我正在工作的项目中,我需要知道在不同文件中定义的结构的大小。
我尝试使用 sizeof(name_of_the_structure) 但这不起作用,因为我无法在当前文件中包含另一个文件。
定义结构的头文件有 Include Guards 并且不允许我将它包含在当前文件中,因为它已经包含在其他文件中。
我可以在代码中手动放置大小,但将来如果需要更改结构,我也需要更改它。
我可以做些什么来发现结构大小?
在此先感谢 Mauro。
【问题讨论】:
-
包含守卫不应该引起问题:如果他们不让标题被包含,那是因为它已经被包含了。
-
你好@H2CO3,是的,它已经包含在当前文件中,但没有包含在当前文件中,所以当我尝试编译时,我得到'错误:'ST_ContainerManagement' undeclared (first use in this function)'。跨度>
-
@userXXX “但不在当前文件中” - 但是是的。包含防护的要点是它们防止重新包含 - 它们不会阻止包含文件最多一次。如果包含防护有效(即它刚刚阻止了重新定义内容),然后在当前正在编译的翻译单元中,一切都可见且正常。
-
@H2CO3 你是说它应该在当前文件中可见?但它尚未包含在当前文件中,它已包含在代码中的其他位置。结构在“app_log.h”中定义,结构的实例在“app_log.c”上定义,我需要知道 SPI25VF064.c 中 ST_ContainerManagement 结构的大小,尽管文件“app_log.h”已经包含在内代码中的其他地方。问候,毛罗。
-
让我猜猜:也许你需要写:
sizeof(struct struct_name)