我有一个旧的c项目,它使用许多变量名,导致它无法在c ++,new
,this
等中编译。
所以试着看看我是否可以编译它我已经完成了这个:
.c
(下面的代码)TEST.C:
#include "Test.h"
int test()
{
int new = 123;
return new;
}
但是它仍然抱怨new
,所以它没有把它编成纯粹的C.我错过了什么?
修改
我知道new
,this
等是c++
中的保留名称。但是我试图将其编译为c
并且我试图避免在重大项目中重命名。如果我告诉它编译为c
,为什么它仍然强制执行这些保留名称?
答案 0 :(得分:2)
见答案:
https://stackoverflow.com/a/5770919/1191089
还有一些额外的标志可以禁用可能适用的Microsoft扩展。
我知道它没有回答这个问题,但是您可能会发现更改变量名称的工作量更少,搜索和替换名为“this”和“new”的变量只需要5分钟。
答案 1 :(得分:1)
new
是用于分配内存的保留标识符,如
int* i = new int(123);
您无法使用它。切换到变量的其他名称,例如
#include "Test.h"
int test()
{
int i = 123;
return i;
}
C ++的保留字可以方便地放在几个组中。在第一组中,我们将那些同样存在于C编程语言中的内容放到了C ++中。其中有32个,这里是:
auto const double float int short struct unsigned
break continue else for long signed switch void
case default enum goto register sizeof typedef volatile
char do extern if return static union while
还有另外30个保留字不在C中,因此对C ++来说是新手,这里它们是:
asm dynamic_cast namespace reinterpret_cast try
bool explicit new static_cast typeid
catch false operator template typename
class friend private this using
const_cast inline public throw virtual
delete mutable protected true wchar_t
取自here。
答案 2 :(得分:0)
您没有将C源代码编译为C代码,您需要将代码迁移到C ++,这涉及替换变量名称,这些变量在c ++中用作关键字。