2010-02-08 128 views
5

Próbuję zadeklarować procedurę oddzwaniania w C++ następująco:Co oznacza błąd "niekompletny typ nie jest dozwolony"?

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. 
    */ 

Jednak pojawia się następujący błąd:

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

Nie jestem pewien, jak to poprawić. Mam inne podobne procedury wywołania zwrotnego zadeklarowane w tym samym pliku nagłówkowym i nie otrzymuję tego błędu.

Proszę pomóc! :)

+11

Podświetlanie składni daje użyteczną wskazówkę tutaj ... – ephemient

+0

Można również znaleźć ten łatwiej kod Jeśli typedef wskaźnik funkcji: 'typedef int (* fn) (const char *, const char * newStr); void register_rename (fn); ' –

+1

Również" void register_rename (int (*) (const char *, const char *)); "jest równoważnym prototypem; nazwy nie są konieczne. – ephemient

Odpowiedz

19

Nie można użyć nowego, ponieważ jest to słowo kluczowe. Spróbuj wybrać poprawny identyfikator dla drugiego argumentu.

7

Nie można nazwać zmiennej (lub jakiegokolwiek identyfikatora) z zastrzeżonym słowem;

zarezerwowane słowa są wyszukiwane

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 

i alternatywne nazwy niektórych operatorów

and and_eq bitand bitor compl not 
not_eq or or_eq xor xor_eq 
Powiązane problemy