2010-02-08 25 views
5

Tôi cố gắng để tuyên bố một thói quen gọi lại trong C++ như sau:Lỗi "không hoàn toàn không được phép" có nghĩa là gì?

void register_rename (int (*function) (const char *current, const char *new)); 
    /*------------------------------------------------------------*/ 
    /* WHEN: The callback is called once each time a file is received and 
    * accepted. (Renames the temporary file to its permanent name) 
    * WHAT: Renames a file from the given current name to the specified new name. 
    */ 

Tuy nhiên, tôi nhận được lỗi sau:

line 204: error #70: 
     incomplete type is not allowed 
void register_rename (int (*function) (const char *current, const char *new)); 

Tôi không chắc chắn làm thế nào để khắc phục điều này. Tôi có các thói quen gọi lại tương tự khác được khai báo trong cùng một tệp tiêu đề và tôi không nhận được lỗi này.

Vui lòng trợ giúp! :)

+11

Cú pháp tô sáng cho một gợi ý hữu ích ở đây ... – ephemient

+0

Bạn cũng có thể tìm thấy dễ dàng hơn này để mã hóa nếu bạn typedef sự con trỏ hàm: 'typedef int (* fn) (const char *, const char * newStr); void register_rename (fn); ' –

+1

Ngoài ra,' void register_rename (int (*) (const char *, const char *)); 'là một nguyên mẫu tương đương; tên không cần thiết. – ephemient

Trả lời

19

Bạn không thể sử dụng mới vì đó là từ khóa. Hãy thử chọn một số nhận dạng hợp lệ cho đối số thứ hai của bạn.

7

Bạn không thể đặt tên biến (hoặc bất kỳ số nhận dạng nào) với một từ dành riêng;

từ dành riêng là các từ khóa

asm do if return try 
auto double inline short typedef 
bool dynamic_cast int signed typeid 
break else long sizeof typename 
case enum mutable static union 
catch explicit namespace static_assert unsigned 
char export **new** static_cast using 
class extern operator struct virtual 
const false private switch void 
const_cast float protected template volatile 
continue for public this wchar_t 
default friend register throw while 
delete goto reinterpret_cast true 

và thay thế tên của một số nhà khai thác

and and_eq bitand bitor compl not 
not_eq or or_eq xor xor_eq 
Các vấn đề liên quan