我是编写 makefile 的新手。最近我在 makefile 中看到了模式规则。例如:
%.o: %.cc
# command to compile comes here
Run Code Online (Sandbox Code Playgroud)
经过在网上的严格搜索,我发现了上面的语句的作用,但是我遇到了下面的另一个语句。
%: %.o
# Command to link lies here
Run Code Online (Sandbox Code Playgroud)
我不明白这个规则。谁能解释一下第二个模式规则?
关于将数组传递给函数我有疑问.
请考虑以下代码段.
void main()
{
int a[4]={10,20,30,40};
fun1(a);
}
void fun1(int a1[])
{
for(int i=0;i<4;i++)
{
printf("%d\n",a1[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
传递数组只不过是传递第一个位置的地址.我应该传递上面的数组及其名称(数组的起始地址).我怀疑是因为[4]是一个自动变量,它应该在它从主函数出来时死掉它应该给出意想不到的结果(指针应该是悬空的).但它工作正常.
我对此非常困惑,请你把它清理干净.
即使我们通过一个单一的元素int a如f(&a),它不应该在函数f存在,如果它被声明为自动(在主函数的局部变量).
请清楚这一点.