я пытаюсь составить простую тестовую программу, и один из заголовочных файлов я в том числе имеет следующие ЬурейеЕг ++ ошибка относительно неопределенной ссылки на TYPEDEF
typedef const char* CharConst;
typedef unsigned int MyBool;
позже в файле заголовка, некоторые функции определены используя этот typedef. такие вещи, как:
MyBool add_att(CharConst attr, const char*);
я получаю ошибку, когда я пытаюсь сделать вызов этой функции, с вызовом, как:
CharConst myconst = "some text";
const char* more_text = "more text";
add_att(myconst, more_text);
ошибка является: неопределенная ссылка на `MyClass :: add_att (char const *, char const *) '
кажется, что компилятору не нравится тот факт, что первый аргумент был typedef'd в файле заголовка. но это не против MyBool. компилятор только жалуется на определение CharConst.
есть ли простой способ исправить это? любые подсказки или намеки на то, что я могу сделать? я запускаю gcc версии 4.6.2
Показать подпись функции в определении. Также никогда не используйте 'typedef' в типах указателей, это запутывает, а такие проблемы всегда ползут вместе с ним. –
Вы включили заголовочный файл, который объявил/определил 'add_att()' в файле, который вы пытались вызвать эту функцию? Определяется ли 'add_att()' в lib, и вы забыли связать с этим lib? –
«typedef» не должен иметь никакого значения (за исключением путаницы с людьми, которые пытаются прочитать код). Похоже, либо вы не реализовали эту функцию, либо не связываетесь с файлом, который содержит его реализацию. –