Что означает ошибка «неполный тип не разрешен»? - PullRequest
6 голосов
/ 08 февраля 2010

Я пытаюсь объявить процедуру обратного вызова в C ++ следующим образом:

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

Однако я получаю следующую ошибку:

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

Я не уверен, как это исправить. У меня есть другие подобные процедуры обратного вызова, объявленные в том же заголовочном файле, и я не получаю эту ошибку.

Пожалуйста, помогите! :)

Ответы [ 2 ]

19 голосов
/ 08 февраля 2010

Вы не можете использовать новый, потому что это ключевое слово. Попробуйте выбрать правильный идентификатор для второго аргумента.

7 голосов
/ 08 февраля 2010

Вы не можете назвать переменную (или любой идентификатор) зарезервированным словом;

зарезервированные слова являются ключевыми словами

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

и альтернативные имена некоторых операторов

and and_eq bitand bitor compl not
not_eq or or_eq xor xor_eq
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...