HttpCache.h - function uws::time_ms() should be inline

Đang mở Phù hợp với người mới
#1,964 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
72/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
cpp
Lĩnh vực
backend

Hướng nghiên cứu

Issue đề cập đến HttpCache.h và báo lỗi định nghĩa nhiều lần uWS::time_ms() khi tiêu đề được nhiều tệp .cpp đưa vào. Bắt đầu bằng cách đọc hàm đó và kiểm tra cách giá trị trả về của nó được sử dụng. Công việc hoàn tất khi dự án liên kết thành công trong cấu hình được mô tả và tên hàm cùng đơn vị thời gian khớp nhau.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Description

There is a linker error due to a violation of the One Definition Rule (ODR) caused by the definition of uws::time_ms() inside the HttpCache.h header file without the inline keyword:

Additionally, there appears to be a logical issue in the implementation: the function is named time_ms(), but it divides the millisecond count by 1000, effectively returning seconds instead of milliseconds.

Steps to Reproduce
  1. Include HttpCache.h in more than one .cpp file within a project.
  2. Attempt to compile and link the project.
Expected Behavior
  • The project should link successfully without "multiple definition" errors.
  • The time_ms() function should return time in milliseconds (without dividing by 1000), or it should be renamed to match its actual return unit.
Actual Behavior

The linker fails with the following error:

/usr/include/uWebSockets/HttpCache.h:57: multiple definition of `uWS::time_ms()'
Location

File: HttpCache.h

Current Implementation
unsigned long time_ms() {
Suggested Fix

To fix the linker error, function should be marked as inline.

inline unsigned long time_ms() {
Ngôn ngữ chính
C++
Star
19k
Fork
1.9k
Merge trung bình
3 giờ 59 phút
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của uNetworking/uWebSockets

Tất cả issue của uNetworking/uWebSockets

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.