我正在尝试编译一个简单的测试程序,我包含的头文件之一具有以下 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 的事实。但它并不介意MyBool。 编译器仅抱怨 CharConst 定义。
有什么简单的方法可以解决这个问题吗? 关于我能做什么的任何线索或提示? 我正在运行 gcc 版本 4.6.2
从错误看来add_att是一个类的方法;我没有看到您的类的实例来调用该方法。考虑一下:MyClass *m = new MyClass(); m->add_att(....)
或者,确保函数是实际定义的,而不仅仅是原型。另外,这可能并不重要,但是在函数定义期间 - 您是否在函数参数中使用 typedef ?其实这不重要...类型是相同的。