【发布时间】:2020-06-26 12:19:31
【问题描述】:
我想在两个 .c 模块之间共享 sizeof(array) 的值。数组在文件A中初始化,所以编译器在编译时就知道大小,然后我想在另一个B文件中使用这个数组的大小。
示例:
在 A.c 文件中:
int arr[] = {1, 2, 3};
.
.
.
for (int i = 0; i < sizeof(arr); i++); // that works
在 A.h 文件中:
extern int arr[];
在 B.c 文件中:
#include "A.h"
.
.
.
for (int i = 0; i < sizeof(arr); i++); // here compiler doesn't know size of this arr
有没有办法让它工作?我知道为什么这不起作用,但也许有一个偷偷摸摸的技巧来解决这个问题。
【问题讨论】:
-
在 A.h:
extern int arr[3]; -
sizeof(arr)不会产生元素的数量。它为arr生成分配的字节数,如果sizeof(int) == 4,则应为12。 -
如果需要,请使用@pmg 方式。答案中的所有方法都容易出错,难以维护
-
@P__J__ 但这不满足问题的要求,确定
A.c中数组的大小。 -
@RobertSsupportsMonicaCellio 它在两个文件中都有。
标签: c arrays compilation linker