意外*,意外(

时间:2012-10-25 05:10:08

标签: c oop header-files netbeans-7

我正在尝试关注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 */

enter image description here

4 个答案:

答案 0 :(得分:2)

这似乎是少数在C ++下无效的C程序之一:标识符newdelete在C下完全有效,但在C ++下保留。

答案 1 :(得分:1)

您正在编译为C,但只有C ++支持newdelete运算符。

此外,newdelete的签名是:

void* operator new(size_t n);
void operator delete(void* p);

您还可以为特定类重载这些运算符(通过在类中声明它们)。

答案 2 :(得分:1)

new和delete是C ++中的关键字,而不是合法的函数名称。

即使你认为你正在编译C,也要测试它是否可以修复它。如果没有,那么它可能是经典的C / C ++神秘错误:问题出在 previous include中,它可能缺少分号或其他东西。

答案 3 :(得分:0)

如果您想在new中模拟CC++的功能,那么您实际上会给出错误的new参数。 它应该是const unsigned intconst size_t 因为new在C ++中用作

int *p;
p=new (sizeof(int));

但是这里的类型不匹配无法将int转换为const void *

对于delete,这很好,因为deletepointer作为参数