我有一个使用很多的变量名是导致它不是在C ++编译,旧的C ++项目new
, this
等
所以要尝试,看看我能得到它编译我已经做到了这一点:
- 新的空C ++项目
- 增加了一个新的类,重命名的文件
.c
(下面的代码) - 清空头文件
- 项目属性 - > C / C ++ - >高级 - >编译正如=编译为C代码(/ TC)
TEST.C:
#include "Test.h"
int test()
{
int new = 123;
return new;
}
但它仍然抱怨new
,所以它不是编译它作为纯C.我缺少什么?
编辑
我知道, new
, this
等在保留的名称c++
。 但是我想这个编译作为c
我试图避免去,虽然在一个大项目重新命名。 如果我告诉它来编译为c
,为何仍执行这些保留名称?
看到这里的答案:
https://stackoverflow.com/a/5770919/1191089
还有一些附加的标志,以禁用Microsoft扩展,它可以适用。
我知道它不回答这个问题,但你可能会发现,这是较少的努力来改变你的变量名,搜索和替换的变量称为“this”和“新”将只需要5分钟。
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
有迹象表明,是不是在C另外30个保留字,因此新的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
取自这里 。
你是不是在编译C源的C代码,你需要迁移的代码C ++,其中涉及更换的变量,这是在C ++作为关键字名。