【问题标题】:Size of a structure defined on other files (C)在其他文件上定义的结构的大小 (C)
【发布时间】: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)

标签: c header structure sizeof


【解决方案1】:

如果struct ST_ContainerManagementapp_log.h 中声明,则在SPI25VF064.c 的顶部包含app_log.h,然后在它的源代码中获取结构大小。

#include "app_log.h"

...

size_t size_ST_ContainerManagement = sizeof(struct ST_ContainerManagement);

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 2015-08-26
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2015-02-17
    相关资源
    最近更新 更多