2012-11-26 14 views

Trả lời

10
#ifdef __cplusplus 
#define restrict 
#endif 

nên làm điều đó. restrict không phải là một từ khóa trong C++, do đó, #define đưa nó vào không có gì là không có ý nghĩa ở đó.

Hoặc, như Arne Mertz đề nghị, vẫn tốt hơn, có

extern "C" { 
#define restrict 
// include C headers here 
#undef restrict 
} 

nơi bạn bao gồm các tiêu đề C trong C++ nguồn.

+1

xác định 'giới hạn' thành không có gì là hợp pháp ngay cả trong C (vì bộ tiền xử lý biến đổi nguồn trước khi trình biên dịch C nhìn thấy nó), nhưng nó sẽ không là mục đích. –

+0

@AlexeyFeldgendler đó là lý do tại sao nó được bọc bằng '#ifdef __cplusplus' ... – SomeWittyUsername

+3

nếu bạn đặt' # define' trong mã C++ trước khi bao gồm các tiêu đề C (cùng với 'extern" C "{' bạn sẽ cần), bạn thậm chí sẽ không cần '# ifdef/# endif'. Cố gắng xâm lấn tối thiểu, có nghĩa là không sửa đổi mã C của bạn vì ai đó có thể cố gắng sử dụng lib trong C++. Thay vào đó, hãy sửa đổi mã C++. –