Vinova tuyển lập trình viên Mobile & Web ở Hà Nội, lương $300-1000

Article: Crazy warning: No new line at end of file 1561

error, warning
phananhvu.myopenid.com 125
Updated over 3 years ago

Khi compile một chương trình C/C++, Java hay ActionScript, ... trình dịch có thể đưa ra một warning thế này: "No new line at end of file". Nó cần thêm một dòng trống ở cuối file làm quái gì vậy?

Câu trả lời là để cho giống những dòng khác. Vấn đề không nằm ở dòng trống mới mà nằm ở kí tự End-of-line ở dòng code cuối cùng. Có lẽ logic của nó nằm ở chỗ "Tại sao trong khi tất cả các dòng trên đều kết thúc bằng EOL mà dòng cuối lại không?". Vì thế, chuẩn ISO C, mục 5.1.1.2 phát biểu rằng file mã nguồn phải kết thúc với một dòng mới.

Bầy giờ mới biết, trình dịch cũng công bằng như ai đó chứ nhỉ {#emotions_dlg.sealed}. Tuy nhiên warning đó có lẽ nên là "No EOL at the end of last line".

Để công bằng, bài viết này cũng sẽ có một new line at end of file.

 

Comments

cmpitg.myopenid.com 1
over 4 years ago

Theo tôi thấy thì hình như chỉ có gcc là yêu cầu điều này, kể cả compile bình thường lẫn C99-strict. Với một compiler như VC++, DMC thì vẫn compile bình thường mà không đưa ra cảnh báo nào cả.

Có lẽ khi compile, hai compiler đó tự thêm vào ký tự EOL (chính xác hơn phải là CR {#emotions_dlg.smile}).

Correct me if I'm wrong.

 

phananhvu.myopenid.com 125
over 4 years ago

VC++ hình như là IDE chứ ko phải compiler.

Ví dụ mình dùng IDE Eclipse để compile chương trình C dùng gcc hoặc g++ nó vẫn đưa ra cái warrning đấy.

Với AS, dùng Flash CS2 cũng dính trấu :D

Những thằng ko warn thì có lẽ là nó tự cho vào. Nghe nói gcc cho Apple ko bỏ cái warning này.

ngocdaothanh.myopenid.com 172
over 4 years ago

Kĩ sư của MS hình như toàn hàng xịn, nên bét ra họ cũng biết ứng dụng MVC pattern chứ{#emotions_dlg.tongue_out}

VC++ gồm phần compiler và IDE. Compiler thì từ 2001 đã cho không. Đến đời VC++ Express thì cái IDE cũng biếu không nốt{#emotions_dlg.kiss}

cmpitg.myopenid.com 1
over 3 years ago

{#emotions_dlg.laughing}

http://en.wikipedia.org/wiki/VC++

VC++ đúng là gồm compiler và IDE mà. Search mấy trang so sánh C++ compiler thì Intel C++ với VC++ được đánh giá cao nhất....

.... và cả 2 compiler này đều bỏ warn cái "new line at end of file" {#emotions_dlg.laughing}

BTW, để new line at the end of file vẫn thể hiện một coding style nghiêm túc.

 

nguoitapdich.myopenid.com 35
over 3 years ago

Nghe mấy anh làm về khoa học máy tính kháo nhau là compiler của Intel tốt hơn của Microsoft (chắc tại vì vi xử lí là của Intel{#emotions_dlg.laughing}).

Ngoài ra có thể cấu hình để IDE của Microsoft dùng compiler của Intel thì phải, như vậy tận dụng được thế mạnh của cả 2.

You must login to be able to comment

Uploaded files

No file uploaded yet

You must login to be able to upload

Nhà tài trợ:

Mọi người đều tự do viết bài, sửa bài của người khác, và bình luận ở trang web này. Bạn muốn chủ động tạo bài mới để chia sẻ kinh nghiệm với mọi người? Xin click link ở dưới.

Create new content