cuốn sách gpt4 ai đã làm

c++ - Loại bỏ hoàn toàn các cảnh báo gợi ý `cuối cùng` của gcc (`-Wsuggest-final-types` và `-Wsuggest-final-methods`)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:43:21 31 4
mua khóa gpt4 Nike

Tôi thích sử dụng -Wsuggest-cuối-loại biên dịch mã của tôi và -Wsuggest-cuối-phương phápđể có thể sử dụng cuối cùng Nhận cảnh báo khi sử dụng từ khóa để cho phép trình biên dịch có cơ hội tối ưu hóa mạnh mẽ hơn.

Tuy nhiên, đôi khi những gợi ý này không chính xác - ví dụ: tôi có một lớp Căn cứ và một ảo ~Base() hàm hủy, được sử dụng đa hình trong một dự án khác, gcc gợi ý rằng tôi có thể đặt Căn cứ được đánh dấu là cuối cùng.

Có cách nào để báo cho trình biên dịch một cách "sạch sẽ" không Căn cứ được sử dụng đa hình và không nên được đánh dấu là cuối cùng?

Cách duy nhất tôi có thể nghĩ đến là sử dụng #pragma chỉ thị, nhưng tôi thấy nó làm cho mã trở nên khó hiểu và khó đọc.

Lý tưởng nhất là tôi đang tìm kiếm thứ gì đó có thể được thêm vào trước/sau khi khai báo lớp/phương thứcKhông phải cuối cùngTừ khóa hoặc thuộc tính.

câu trả lời hay nhất

Tôi đã nghĩ ra một giải pháp dựa trên vĩ mô mà tôi thực sự không thích, nhưng nó đã giải quyết được vấn đề.

#define MARK_NONFINAL_CLASS(cơ sở) \
không gian tên SOME_UNIQUE_NAME \
{\
struct [[unused]] temp_marker cuối cùng : base \
{\
};
}

#define MARK_NONFINAL_METHOD(cơ sở, kiểu trả về, phương thức) \
không gian tên SOME_UNIQUE_NAME \
{\
struct [[unused]] temp_marker cuối cùng : base \
{\
ghi đè phương thức return_type [[unused]] nội tuyến {} \
};
}

cách sử dụng:

lớp cơ sở
{
ảo ~Base()
{
}

int ảo a(float f)
{
}
khoảng trống ảo b (gấp đôi)
{
}
};

MARK_NONFINAL_CLASS(Cơ sở)
MARK_NONFINAL_METHOD(Cơ sở, int, a(float))
MARK_NONFINAL_METHOD(Cơ sở, void, b(double))

Về c++ - loại bỏ hoàn toàn các cảnh báo gợi ý `cuối cùng` của gcc (`-Wsuggest-final-types` và `-Wsuggest-final-methods`), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/35311799/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress