Tôi đang cố gắng chuyển đổi cấu trúc C++ thành C nhưng tiếp tục nhận được "số nhận dạng không khai báo"? Có C + + có một cú pháp khác nhau để đề cập đến cấu trúc?Sự khác biệt giữa cấu trúc trong C và C++
struct KEY_STATE
{
bool kSHIFT; //if the shift key is pressed
bool kCAPSLOCK; //if the caps lock key is pressed down
bool kCTRL; //if the control key is pressed down
bool kALT; //if the alt key is pressed down
};
Tôi đang sử dụng một biến kiểu KEY_STATE bên trong cấu trúc khác:
typedef struct _DEVICE_EXTENSION
{
WDFDEVICE WdfDevice;
KEY_STATE kState;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
kết quả trong lỗi C2061: lỗi cú pháp: định danh 'KEY_STATE'
... trên dòng KEY_STATE kState; Tôi đang xây dựng với trình biên dịch WDK nếu điều đó tạo ra bất kỳ sự khác biệt nào. Đây là một tập tin tiêu đề của khóa học. Tôi đang chuyển trình điều khiển C++ WDM sang WDF và C.
This is the MSDN article for C2061.
Trình khởi tạo có thể được kèm theo dấu ngoặc đơn. Để tránh vấn đề này, kèm theo khai báo trong dấu ngoặc đơn hoặc đặt nó là typedef.
Lỗi này cũng có thể xảy ra khi trình biên dịch phát hiện biểu thức dưới dạng đối số mẫu lớp; sử dụng typename để cho trình biên dịch biết đó là một kiểu.
Thay đổi KEY_STATE thành typedef struct vẫn gây ra lỗi này và thực sự gây ra nhiều lỗi hơn. Không có dấu ngoặc đơn hay thứ gì trong quá nhiều dấu ngoặc đơn, đó là điều khác mà bài báo gợi ý.
cảm ơn Timbo, đã giải quyết được vấn đề của tôi :) –