众所周知,函数和变量不能同名。
像这样 :
#include<stdio.h>
int main;
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是由 'main' 重新声明为不同类型的符号引起的。
但是以下两个文件可以成功编译,让我感到困惑。主文件:
void print_main(void);
int main() {
print_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印_main.c
#include <stdio.h>
char main;
void print_main() {
printf("Output: 0x%x\n", main); //Output: ffffffe9
}
Run Code Online (Sandbox Code Playgroud)
困惑
我试过的
主文件
void print_main(void);
int main() {
printf("%p\n", &main); // 003D12BC
print_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印_main.c
#include <stdio.h>
char main;
void print_main() { …Run Code Online (Sandbox Code Playgroud)