Tôi đã chạy các mã sau đây được biên soạn với nhau như: gcc A.c B.c -o combined
extern trong nhiều file và có thể định nghĩa đôi
Chương trình A:
#include<stdio.h>
int a=1;
int b;
int main()
{
extern int a,b;
fun();
printf("%d %d\n",a,b);
}
Chương trình B:
int a;
int b=2;
int fun()
{
printf("%d %d\n",a,b);
return 0;
}
On chạy " kết hợp "chương trình đầu ra là:
1 2
1 2
.210
Bây giờ, tôi đã một vài nghi ngờ về điều này một:
Tại sao không phải là kết quả:
Are không phải là một và b được định nghĩa hai lần?
Vui lòng giải thích rõ ràng, tôi đã gặp rất nhiều vấn đề khi hiểu rõ hơn và đôi khi những nghi ngờ này thường xuyên xảy ra.
Cảm ơn trước.
bạn cố gắng lừa trình biên dịch và trình biên dịch đã lừa bạn. –
Nó không phải về việc đánh lừa trình biên dịch, Đó là về việc nhận các khái niệm đúng. – tapananand