我正在尝试关注OOP C中的应用程序,但我的new.h文件中出现错误。
我收到一堆“意外”的错误。 几乎所有事情都在第一个'空虚'之后被推翻。 有什么想法吗?
#ifndef NEW_H
#define NEW_H
#ifdef __cplusplus
extern "C" {
#endif
void * new (const void * type);
void delete (void * item);
#ifdef __cplusplus
}
#endif
#endif /* NEW_H */
答案 0 :(得分:2)
这似乎是少数在C ++下无效的C程序之一:标识符new
和delete
在C下完全有效,但在C ++下保留。
答案 1 :(得分:1)
您正在编译为C,但只有C ++支持new
和delete
运算符。
此外,new
和delete
的签名是:
void* operator new(size_t n);
void operator delete(void* p);
您还可以为特定类重载这些运算符(通过在类中声明它们)。
答案 2 :(得分:1)
new和delete是C ++中的关键字,而不是合法的函数名称。
即使你认为你正在编译C,也要测试它是否可以修复它。如果没有,那么它可能是经典的C / C ++神秘错误:问题出在 previous include中,它可能缺少分号或其他东西。
答案 3 :(得分:0)
如果您想在new
中模拟C
中C++
的功能,那么您实际上会给出错误的new
参数。
它应该是const unsigned int
或const size_t
因为new在C ++中用作
int *p;
p=new (sizeof(int));
但是这里的类型不匹配无法将int
转换为const void *
对于delete
,这很好,因为delete
将pointer
作为参数