无法在visual studio 2012中编译C.

我有一个较旧的c项目,它使用许多变量名,导致它无法在c ++, newthis等中编译。

所以,试着看看我是否可以编译,我已经这样做了:

  1. 新的空C ++项目
  2. 添加了一个新类,重命名了文件.c (下面的代码)
  3. 清空了头文件
  4. 项目属性 – > C / C ++ – >高级 – >编译为=编译为C代码(/ TC)

TEST.C:

 #include "Test.h" int test() { int new = 123; return new; } 

但它仍然抱怨new ,所以它不是纯粹的C编译。我错过了什么?

编辑

我知道newthis等是c++中的保留名称。 但我正在尝试将其编译为c而我正试图避免在一个大型项目中重命名。 如果我告诉它编译为c ,为什么它仍然强制执行这些保留名称?

看到答案:

https://stackoverflow.com/a/5770919/1191089

还有一些额外的标志可以禁用可能适用的Microsoft扩展。

我知道它没有回答这个问题,但是您可能会发现更改变量名称的工作量更少,搜索和替换名为“this”和“new”的变量只需要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 

还有另外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 

取自这里 。

您没有将C源代码编译为C代码,您需要将代码迁移到C ++,这涉及替换变量名称,这些变量在c ++中用作关键字。