2013-06-10 27 views
10

tôi chuyển đổi một số mã Fortran để C. Tôi đã tự hỏi nếu ai đó có thể giúp tôi giải quyết vấn đề sau:Tự động sửa chữa thiếu ngoặc trong C

warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] 

Tôi biết cảnh báo này là do cú pháp như thế này:

A || B && C 

nào nên được viết như sau:

A || (B && C) 

trình biên dịch của tôi là có khả năng biên dịch si đang nce & & có mức độ ưu tiên cao hơn || do đó, nó chỉ tưởng tượng các dấu ngoặc đơn.

Vấn đề là cảnh báo này xảy ra khoảng 30.000 lần kể từ khi tôi đang làm việc trên một dự án lớn.

Có công cụ nào có thể chèn dấu ngoặc đơn xung quanh tất cả các & & tự động không?

+4

Nếu bạn muốn chắc chắn, tôi e là bạn phải triển khai trình phân tích mã C để đạt được điều này ... – Spook

+0

Thật sao? 30.000 lần? Bạn dự án có bao nhiêu dòng? Hoặc là cùng một cảnh báo được hiển thị nhiều lần do tiêu đề được bao gồm bởi các mô-đun khác nhau? Sau đó, chi phí thay đổi những thứ bằng tay có thể không quá tệ. –

+4

Bạn chuyển đổi từ Fortran sang C bằng cách nào? Có vẻ như bạn cần sửa bước đó. –

Trả lời

3

Như những người khác đã nói làm nó bằng tay, bạn cũng có thể vô hiệu hóa cảnh báo này sử dụng -Wno-parentheses, mặc dù đó là khá nguy hiểm

+5

không còn nguy hiểm hơn việc tự động thêm dấu ngoặc đơn mà không cần nghiên cứu mã. – agentp

0

Tắt cảnh báo ngu ngốc. A || B && C không không cần dấu ngoặc đơn, bất kỳ số nào lớn hơn A + B * C. Trừ khi bạn không bận tâm tìm hiểu cách biểu thức logic hoạt động ...

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