2013-10-22 16 views
10

Tôi đang xem xét một số mã nguồn độc quyền: các chương trình mẫu trong việc sử dụng thư viện.Tại sao các tệp C sẽ kết thúc bằng/* [] */

Mã được viết bằng C và C++, sử dụng chế độ tạo cho hệ thống xây dựng.

Mỗi và mọi tệp kết thúc bằng một nhận xét ra []: /*[]*/ cho tệp nguồn và #[]# cho makefiles. Điều gì có thể là lý do cho điều này?

Mã được biên dịch cho ARM bằng GCC, sử dụng các phần mở rộng.

+0

Điều đó có lẽ sẽ là 'vi'. – Rohan

+3

Tôi sẽ không gọi đó là một kiểu mã hóa, và tôi đoán rằng nó không phải là tiêu chuẩn C. Các dòng bắt đầu bằng '#' thường là các chỉ thị tiền xử lý, và '[] #' không phải là tiêu chuẩn. Bạn có chắc chắn rằng '# [] #' thực sự là dòng cuối cùng của mỗi tệp không? –

+1

Tôi đoán là hệ thống makefile sử dụng những dòng đó ở đâu đó. Nếu mã có mã C đủ tuổi, nó không nhất thiết phải đếm trên // bình luận, vì vậy # sẽ là một cách để thêm một dòng không mã, và trình biên dịch trước sẽ lọc nó ra. Có lẽ nó là để xây dựng một cây phụ thuộc, hay cái gì đó? Linh cảm của tôi sẽ nhìn qua makefile. –

Trả lời

6

Rất có thể là trình giữ chỗ cho một số loại mở rộng tự động.

Thông thường một cái gì đó như macrodef (hoặc một trong các bộ lọc kiểm soát mã nguồn) sẽ mở rộng các mục như vậy để chứa một số văn bản có liên quan. Thông thường chỉ các dấu ngoặc đơn được bảo vệ bình luận sẽ mở rộng, các chú thích sẽ vẫn giữ nguyên, bảo vệ mã nguồn khỏi các mục mở rộng thực tế tại thời gian biên dịch.

Tuy nhiên, những gì bạn đang xem có lẽ là các dấu ngoặc bên ngoài chứa tất cả các mở rộng nội bộ đã bị xóa. Điều này có thể đã được thực hiện trong quá trình di chuyển mã từ một hệ thống kiểm soát mã nguồn sang hệ thống kiểm soát mã nguồn khác. Mặc dù ý tưởng như vậy có tính đầu cơ cao, nhưng dường như họ không nỗ lực di chuyển các mục mở rộng, thay vì chỉ loại bỏ chúng.

0

Trên một dự án tôi đã từng làm việc, mỗi file nguồn C chứa một lời nhận xét vào cuối:

/* End of file */ 

Lý do cho điều đó là cảnh báo gcc

Warning : No new line at end of file 

Vì vậy, chúng tôi đã có này bình luận (với một dòng mới sau nó) để chắc chắn mọi người không viết sau khi bình luận :)

+2

Điều đó không có nghĩa gì cả! Mọi người vẫn có thể xóa dòng mới ở cuối nhận xét đó, miễn là trình chỉnh sửa của họ cho phép. – rodrigo

+0

Đó là một ý tưởng hay, và tôi cũng nghĩ đến việc đề cập đến nó; nhưng, nó không giải thích được lý do tại sao các tệp thực hiện có cùng kiểu nhận xét. Làm cho các tập tin không được biên soạn, và do đó, họ sẽ không nhận được 'gcc' để phát ra một cảnh báo trình biên dịch. –

+0

@rodrigo Chắc chắn, nhưng họ thấy bình luận, và loại không viết 'sau khi kết thúc tập tin'. Nó làm việc thực sự. – Archie

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