I have an older c project that uses many variable names that cause it to not compile in c++, new
, this
etc.
So to try and see if I can get it compiling I have done this:
- New empty C++ project
- Added a new class, renamed the file
.c
(code below) - Emptied the header file
- Project properties->C/C++->Advanced->Compile As = Compile as C Code (/TC)
Test.c:
#include "Test.h"
int test()
{
int new = 123;
return new;
}
But it still complains about new
, so it's not compiling it as pure C. What am I missing?
EDIT
I'm aware that new
, this
etc are reserved names in c++
. But I am trying to compile this as c
And I'm trying to avoid going though renaming in a massive project. If I tell it to compile as c
, why does it still enforce these reserved names?
new
is a reserved identifier for assigning memory like inYou can't use it. Switch to another name for your variable, like
The reserved words of C++ may be conveniently placed into several groups. In the first group we put those that were also present in the C programming language and have been carried over into C++. There are 32 of these, and here they are:
There are another 30 reserved words that were not in C, are therefore new to C++, and here they are:
taken from here.
You are not compiling C sources as C code, you need to migrate the code to C++, which involves replacing names of variables, which are in c++ used as keywords.
See the answer here:
https://stackoverflow.com/a/5770919/1191089
There are some additional flags to disable Microsoft extensions which might be applicable.
I know it doesn't answer the question, but you might find that it's less effort to change your variable names, a search and replace on variables called "this" and "new" will only take 5 minutes.