我正面临一个问题,如下所述
我有一些C档
return Redirect::to('your_ulr')->withInput(Request::all());
main.c
#include <stdio.h>
#include "header.h"
int main() {
int x = sizeof(a);
printf("size = %d\n", x);
}
header.h
和#include <stdio.h>
extern int a[];
header.c
Que 1:这个外部声明是否正确?
Que 2:如果是,我在编译时遇到错误
#include "header.h"
int a[] = {1, 21, 3};
答案 0 :(得分:2)
在main
中,由于a
中的int
声明,编译器知道extern int a[];
是一个header.h
数组。
但它不知道它的大小,因为在int a[] = {1, 21, 3};
中看不到可以推断出大小的声明(main.c
),因为它在header.c
中完全是与main.c
无关;即使main.c
不存在,您也可以编译header.c
(至少如果您删除了笨拙的sizeof
)。
无法直接从a
中获取main.c
数组的大小
但是你可以在header.c
中创建一个函数来告诉你a
数组的大小:
<强> header.c 强>
#include "header.h"
int a[] = {1, 21, 3};
int GetSizeofA()
{
return sizeof a;
}
<强> header.h 强>
extern int a[];
int GetSizeofA();
<强>的main.c 强>
#include <stdio.h>
#include "header.h"
int main() {
int x = GetSizeofA();
printf("size = %d\n", x);
}
顺便说一句:#include <stdio.h>
中无需header.h
。