2013-04-29 34 views

Trả lời

1

Nếu bạn có #define NAME "supreeth" trong abc.c, bạn chắc chắn có thể có một biến bên ngoài cùng tên trong một tệp khác def.c, điều này cũng liên quan đến trình biên dịch. Nếu bạn ngụ ý một số loại phụ thuộc giữa hai điều này, sự phụ thuộc/liên kết đó sẽ không xảy ra. Rõ ràng nó là khó hiểu và một ý tưởng tồi để làm một cái gì đó như thế này.

8

Bạn không thể sử dụng extern có macro. nhưng nếu bạn muốn macro của bạn nhìn thấy bởi nhiều file C

đặt định nghĩa macro của bạn

#define NAME "supreeth" 

trong một tập tin tiêu đề như def.h

sau đó bao gồm bạn def.h tại của bạn Mã C và sau đó bạn có thể sử dụng macro của mình trong tệp C trong tất cả các tệp C khác nếu bạn bao gồm def.h

+0

Có thể làm gì? Không có biến và khái niệm 'extern' không áp dụng. –

+0

Tôi không có nghĩa là sử dụng extern tôi ean ông có thể xác định vĩ mô của mình trong tập tin tiêu đề sau đó ông có thể nhìn thấy nó từ các tập tin C của mình. có thể tôi phải cụ thể hơn, tôi sẽ cập nhật câu trả lời của mình – MOHAMED

14

Trong mã của bạn NAME không phải là biến. Đó là ký hiệu tiền xử lý, có nghĩa là văn bản NAME sẽ được thay thế ở mọi nơi trong mục nhập bằng chuỗi "supreeth". Điều này xảy ra cho mỗi tập tin, do đó, nó không có ý nghĩa để nói về nó là "bên ngoài".

Nếu một tệp C cụ thể được biên dịch mà không có #define, mọi việc sử dụng NAME sẽ vẫn giữ nguyên.

Các vấn đề liên quan