2015-09-03 13 views
11

Trong dự án của tôi có một tập tin đính kèm trong một chỉ thị ifdef PreprocessorXác định những biểu tượng tiền xử lý cho máy phân tích Clion

#ifdef SOME_SYMBOL 
... entire file ... 
#endif 

SOME_SYMBOL được xác định bởi một tệp được biên soạn trước thế này, và mã công trình như mong đợi, nhưng tĩnh phân tích không nhận thức được biểu tượng này và do đó nó xử lý SOME_SYMBOL là không xác định. Toàn bộ tệp không làm nổi bật cú pháp và một số phân tích chỉ bị bỏ qua (ví dụ: đánh dấu lỗi cú pháp).

Có cách nào để yêu cầu trình phân tích xử lý biểu tượng này như được xác định mà không xác định nó trong CMakeLists.txt không?

Tôi không có tùy chọn xác định SOME_SYMBOL trong CMakeLists.txt vì dự án phụ thuộc vào nó không được xác định trong một số đường dẫn biên dịch (thay đổi điều này sẽ gần như không thể).

Cập nhật:
Dường như đây hiện là sự cố mở với JetBrains. Xem Issue CPP-2286

+1

Có khả năng bạn cần tìm ngữ cảnh bao gồm phù hợp cho tệp. Nếu bạn có thanh trạng thái hiển thị, bạn có thể thấy danh sách thả xuống 'Bối cảnh:' ở góc dưới cùng bên phải. Chỉ cần thử một số. – uta

Trả lời

1

Để làm nổi bật cú pháp: Chuyển đến Cài đặt ⇒ Trình soạn thảo ⇒ Màu sắc & Phông chữ ⇒ C/C++ và xóa tất cả các dấu tích cho 'Mã không được biên dịch'. Bằng cách này, tất cả các mã sẽ hiển thị với đánh dấu thông thường.

+0

Xin cảm ơn, nhưng tôi không thể tìm thấy bất kỳ hộp kiểm nào có chú thích giống như "Mã không biên dịch có điều kiện". – Neowizard

+0

Cảm ơn, công trình này - nó chỉ không được hiển thị trong bản xem trước làm nổi bật được khôi phục cho các khối này. – Stecman

1

Clion bây giờ có một vĩ mô mà bạn có thể sử dụng để phát hiện các IDE: https://youtrack.jetbrains.com/issue/CPP-1296#comment=27-1846360

#ifdef __JETBRAINS_IDE__ 
    // Stuff that only clion will see goes here 
#endif 

này cho phép bạn đưa vào định nghĩa để làm cho Clion làm cho mã của bạn đúng trong trường hợp nó không thể đủ thông minh để tìm ra.

Giá trị của macro __JETBRAINS_IDE__ là chuỗi phiên bản cho IDE. Phiên bản cụ thể của macro tồn tại cho các IDE Jetbrains khác nhau: __CLION_IDE__, __STUDIO_IDE__ (dành cho Android Studio) và __APPCODE_IDE__ (đối với Mã AppCode).

Yay!

Lưu ý: Tại thời điểm viết, điều này chỉ có sẵn trong EAP CLION mới nhất.

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