Tôi hơi bối rối trước tuyên bố #define
. Trong thư viện, chúng dường như là một phương tiện giao tiếp giữa các tệp khác nhau, với rất nhiều #ifdef
s và #ifndef
s.C: Chỉ thị #define có toàn cầu không?
Có nói rằng, bây giờ tôi có hai tệp file1.c
và file2.c
được biên dịch cùng nhau, với #define TEST 10
bên trong file2.c
. Tuy nhiên, khi tôi sử dụng TEST
bên file2.c
trình biên dịch cung cấp cho các thông báo lỗi sau:
'TEST' undeclared (first use in this function)
Are #define
chỉ thị toàn cầu?
Tùy thuộc vào nơi chúng được xác định. – Nick
'# define' là một chỉ thị tiền xử lý - nó chỉ làm thay thế văn bản đơn giản tại thời gian biên dịch - chỉ đơn vị biên dịch và bất kỳ tệp' # include'd nào sẽ * thấy * một '# define'. –