Vì vậy, tôi đang gặp sự cố với một số mã mà tôi đã kế thừa. Mã này đã được xây dựng tốt trong một môi trường C-only, nhưng bây giờ tôi cần phải sử dụng C + + để gọi mã này. Tiêu đề problem.h
chứa:Kiểm tra xem bool có được định nghĩa trong hỗn hợp C/C++
#ifndef _BOOL
typedef unsigned char bool;
static const bool False = 0;
static const bool True = 1;
#endif
struct astruct
{
bool myvar;
/* and a bunch more */
}
Khi tôi biên dịch nó như C++, tôi nhận được error C2632: 'char' followed by 'bool' is illegal
tôi nhận được lỗi tương tự nếu tôi quấn #include "problem.h"
trong extern "C" { ... }
(mà tôi không hiểu, bởi vì có nên không có từ khóa bool
khi biên dịch như C)
tôi đã cố gắng loại bỏ các khối từ #ifndef _BOOL
để #endif
, và biên dịch như C++, và tôi nhận được lỗi:?
error C2061: C requires that a struct or union has at least one member
error C2061: syntax error: identifier 'bool'
Tôi chỉ không hiểu làm thế nào ++ biên dịch C được phàn nàn về việc xác định lại bool
, nhưng khi tôi loại bỏ các định nghĩa lại và cố gắng chỉ sử dụng bool
để xác định các biến, nó không tìm thấy bất cứ điều gì .
Bất kỳ trợ giúp nào được đánh giá cao.
Lưu ý rằng 'extern" C "' không có nghĩa là "biên dịch thành C". Nó có nghĩa là "biên dịch với liên kết C". Mã bên trong vẫn là C++, bạn không được phép định nghĩa bất cứ thứ gì không thể liên kết với tên C. –