- Q: Which version of
C++ is targeted?
- A:
You have the option of producing
C++/CLI (VC++ 2005 and above) code or native C++.
- Q: Are entire
projects converted?
- A:
You can select C# projects or folders to convert. All ".cs" files
within that project or folder will be converted and written as
either combined declaration/implementation header files or as
traditionally separated .h/.cpp files to the
directory you specify. However, Instant C++ does not
construct the new C++ project file. This is due to the
lack of one-to-one correspondence between C# project types and
formats and C++ project types and formats.
-
- Q: Is the original
C# code
altered in any way?
- A:
Your existing code is left completely intact. The new
C++
files are written to the new
location that you specify.
- Q: Do you guarantee
a 100% complete conversion?
- A:
No. Our converter accuracy is the highest in the industry, but
there will be some minor tweaks required in all but the most
trivial conversions. Read the rest of the FAQ to get an idea of a
few things that are not converted. It
is critical to try some of your own code when comparing C# to
C++ converters since it is very easy to create a converter
that does very well on a
specific sample set. The most important criterion is how
well the converter does on your own code, and this is where
Instant C++ (C# Edition)
will clearly show its superiority.
-
- Q: What are the most
common manual adjustments?
- A:
-
●
Types must be declared before they are used
in C++. Instant C++ does not move type declarations around
to satisfy this C++ requirement. In C# there is no such
requirement since the C# compiler makes more than one pass
through the source code.
-
-
●
Same class constructor calls are not
supported in C++. These cases are marked with "ToDo"
comments.
-
-
●
For the native C++ output option, only some
of the .NET Framework references are converted to native C++
equivalents. You will need to adjust most of these references
yourself.
-
-
●
For the native C++ output option, attributes
and event declarations are commented out since there is no
direct native C++ equivalent to .NET attributes and events.
-
-
●
Static constructors are not supported in
native C++. If you have selected the option to output native C++
code, then you will need to refactor the initialization logic.
-
-
●
Anonymous methods are not converted by
Instant C++ if local variables
of the outer method are referenced within the anonymous method. These are marked with "ToDo" comments.
-
-
●
You cannot initialize non-static class fields
in their declarations
in C++, so these are marked with "ToDo" comments. The
recommended solution is to move the initializations to a
constructor or common method called by all the existing
constructors.
-
-
●
There will be occasional qualifier symbol
adjustments required. For example, it is possible that
Instant C++ fails to determine whether a particular C# dot
operator should be replaced by a C++ arrow, double colon, or
dot. If type analysis fails to determine the equivalent,
heuristics are used to determine the most probable equivalent.
-
-
●
Since Instant C++ does not map to a
particular C++ project type, the C# 'Main' method is left in
it's original location and converted literally. Depending
on the C++ project type, you will need to adjust the location
and structure of the main method.
|