Tôi gặp sự cố khi khởi tạo một mảng có kích thước được định nghĩa là extern const. Tôi luôn tuân thủ quy tắc rằng các biến toàn cầu phải được khai báo là extern trong các tệp tiêu đề và các định nghĩa tương ứng của chúng phải nằm trong một trong các tệp triển khai để tránh các lỗi tái định nghĩa biến. Cách tiếp cận này làm việc tốt cho đến khi tôi đã phải khởi tạo một mảng với kích thước của nó được định nghĩa là một const bên ngoài. Tôi gặp lỗi khi biểu thức liên tục được mong đợi. Tuy nhiên, nếu tôi cố gắng gán một giá trị cho biến const thì trình biên dịch chính xác phàn nàn rằng một giá trị không thể được gán cho một biến không đổi. Điều này thực sự chứng minh rằng trình biên dịch không thấy biến là hằng số. Tại sao sau đó là một lỗi được báo cáo khi tôi cố gắng khai báo một mảng có cùng kích thước?Khai báo một mảng có kích thước được khai báo là extern const
Có cách nào để tránh điều này mà không sử dụng # define không? Tôi cũng muốn biết lý do cho lỗi này.
Package.h:
#ifndef PACKAGE_H
#define PACKAGE_H
extern const int SIZE;
#endif
Package.cpp:
#include "Package.h"
const int SIZE = 10;
Foo.cpp:
#include "Package.h"
int main()
{
// SIZE = 5; // error - cannot assign value to a constant variable
// int Array[SIZE]; // error - constant expression expected
return 0;
}
Bạn có thể thụt lề mã với bốn dấu cách để định dạng. – Thomas