2013-08-21 33 views
0

在我正在工作的項目上,我需要知道在不同文件上定義的結構的大小。在其他文件上定義的結構的大小(C)

我試圖使用sizeof(name_of_the_structure),但這不起作用,因爲我不能在當前的文件中包含其他文件。

定義了結構的頭文件包含有包含衛士,並且不允許將它包含在當前文件中,因爲它已包含在其他文件中。

我可以手動在代碼中放置大小,但在將來如果需要更改結構,我還需要更改它。

我能做些什麼來發現結構尺寸?

感謝先進的,最好的問候,毛羅。

+3

包括警衛不應該導致問題:如果他們不讓頭被包含,那是因爲它已經包含了**。 – 2013-08-21 10:25:16

+0

Hello @ H2CO3,是的,它已經包含在當前文件中,所以當我嘗試編譯時,我得到'錯誤:'ST_ContainerManagement'未聲明(首次在此函數中使用)'。 – maurosmartins

+0

@userXXX「但不在當前文件中」 - 但是。包括警衛的要點是他們防止重新包容 - 他們不會阻止包含文件**最多一次。**如果包含警衛有效(即它阻止了重新定義的東西),那麼在目前正在編譯翻譯單元,所有內容都可見且很好。 – 2013-08-21 10:30:39

回答

0

如果struct ST_ContainerManagementapp_log.h中聲明,那麼在SPI25VF064.c的頂部包含app_log.h,然後在它的源代碼中獲取結構大小。

#include "app_log.h" 

... 

size_t size_ST_ContainerManagement = sizeof(struct ST_ContainerManagement);