2015-08-13 20 views
5

Tôi thường chạy mã của mình với ifort, nhưng trong khi triển khai, tôi thích biên dịch và thử nghiệm với gfortran vì tôi thấy nó chặt chẽ hơn nhiều so với đối tác intel của nó.Tắt cảnh báo: `Ký tự tab không phù hợp` trong gfortran

Trong khi bật tùy chọn như -Wall biên soạn, tôi nhận được cảnh báo sau đây:

Warning: Nonconforming tab character at (1)

Có cách nào để bịt miệng một cảnh báo này đặc biệt khi sử dụng các tùy chọn biên dịch giống nhau không? Lưu ý rằng tôi làm NOT muốn thay thế các tab bằng ký tự khoảng trắng. Nếu không có cách nào để giải quyết vấn đề này, thì câu trả lời "Không, không thể" sẽ đủ.

+0

'| grep -v "Ký tự tab không tương thích" ' – agentp

Trả lời

7

Cảnh báo: câu trả lời dưới đây tôi viết ban đầu chỉ áp dụng cho gfortran 4.x. Hành vi đã được đảo ngược trong phiên bản 5.x, xem the answer by user3024046.


Bạn đã thử gì cho đến nay? -Wtabs có trợ giúp không? Từ man gfortran:

-Wtabs

Theo mặc định, các tab được chấp nhận như là khoảng trắng, nhưng các tab không thành viên của Character Set Fortran. Đối với các dòng tiếp tục, một tab được theo sau bởi một chữ số nằm trong khoảng từ 1 đến 9 được hỗ trợ. -Không có tab sẽ khiến cảnh báo được phát hành nếu gặp phải tab. Lưu ý, -Không có tab đang hoạt động cho -pantic, -std = f95, -std = f2003, -std = f2008 và -Wall.

-Wall bộ -Wno-tabs.

Nếu không được, thì vẫn có thể là -Wall sẽ ghi đè tùy chọn này. Sau đó, bạn có thể thử bằng tay thiết -Wall mà không cần phần tab:

Wall

Bật tùy chọn cảnh báo thường được sử dụng liên quan đến việc sử dụng mà chúng tôi khuyên bạn nên tránh và rằng chúng tôi cho là dễ dàng để tránh. Điều này hiện bao gồm -Thay đổi, -Wampersand, -Wconversion, -Wurprising, -Wc-ràng buộc-loại, -Wintrinsics-std, -Không có tab, -Wintrinsic-shadow, -Wline-cắt ngắn, -Wtarget-lifetime, -Wreal -q-constant và -Wunused.

+0

Tôi đã thử' -Không có tab' nhưng '-Wtabs' đã thực hiện thủ thuật. Cảm ơn! – solalito

+0

Thêm một chút vào câu trả lời của bạn, '-Wall' không ghi đè lên các tùy chọn' -Wtabs', nhưng '-pormantic' thực hiện. – solalito

+0

Cảm ơn phản hồi :) Đây thực sự là những gì tôi mong đợi từ 'pedantic': bạn sử dụng nó để buộc hành vi chuẩn, vì vậy nó không nên cho phép các tab. –

3

UPDATE: Với GCC/gFortran 5xx (tôi nhận thấy với 5.3.0), việc sử dụng -Wtabs đã "đảo ngược", và như họ nói, "made hợp lý hơn".

Xem ở đây (https://gcc.gnu.org/gcc-5/changes.html)

Bây giờ -Wtabs KHÔNG cung cấp cho các cảnh báo không phù hợp, trong khi -Wno tab tắt cảnh báo (ví dụ trái ngược với việc sử dụng trước đó).

+0

Wow, biến thú vị của sự kiện :) Kudos cho tìm thấy, tôi chỉnh sửa câu trả lời của tôi để lưu ý rằng nó chỉ hoạt động cho đến 4.x và rằng 5.x được bao phủ bởi câu trả lời của bạn. Cảm thấy tự do để lại nhận xét về câu trả lời không chính xác một phần vào lần tới, điều quan trọng là phải biết các giới hạn của mỗi câu trả lời. –

0

Cách dễ nhất để loại bỏ cảnh báo trong các phiên bản gfortran 4.x là ghi đè cờ -Wno-tab mà cờ -Wall đặt.Vì vậy, đầu tiên bao gồm -Wall và sau đó -Wtabs

-Wall -Wtabs 
Các vấn đề liên quan