How do you enable C++11 syntax in Eclipse Neon?

2019-01-22 07:56发布

问题:

I am developing C+11 code in Eclipse Neon and noticed today that the range based for loop introduced in C+11 is highlighted red by the IDE indicating it does not recognize it.

I have found multiple links about how to do this for older versions of CDT such as this (Eclipse CDT C++11/C++0x support) You can see though there is no "Tool Settings" tab.

Can someone suggest how to configure my project so that C++11 syntax is correctly highlighted (I am using a separate build system)

回答1:

  1. Right click on your project and click Properties
  2. Navigate to C/C++ General and Preprocessor Include Paths, Macros etc.
  3. Select the Providers tab, click on compiler settings row for the compiler you use.
  4. Add -std=c++11 to Command to get compiler specs.
  5. Apply changes.

Will look something like this:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11


回答2:

You can also do the following

  1. go to project properties (alt enter)
  2. In the left pane, scroll to "C/C++ Build", collapse it, select settings.
  3. In the right pane, select and collapse your compiler under the Tool Settings menu, select"Dialect", choose your languange standard from the drop down, or enter -std=c++11 in the "other dialect flags" text input.

Alternatively,

  1. Properties --> "C/C++ Build" --> collapse and and select "Settings"
  2. Under the Tool settings tab, select your compiler, and highlight the "Miscellaneous" field.
  3. add -std=c++11 to the "Other flags" input field.


回答3:

For reasons I do not understand, when searching for clues as to why my Eclispe Oxygen + CDT 9.3.2 running on Fedora 27 could not reliably debug my code, Google put up this question / answer as something to look at.

Basically my problem has been that a fairly simply C++ program, using C++ 11 features (specifically shared_ptr), was un-debuggable in Eclipse Oxygen 2 + CDT 9.3.2 on top of Fedora 27 (which has gdb version 8.0.1 installed from the standard package repo). Stepping into a few method calls resulted in a hung debug session, nothing going on, terminate Eclipse to recover.

If I debugged the binary using gdb on the command line, all was good; I could set break points, etc, everything worked as it should. But from inside Eclipse, nothing doing.

However, putting -std=c++11 into the project settings as shown by Andreas solved the problem. I have very little idea why. I thought I'd put this up in case someone else ran into a similar problem.

g++ is at version 7.2.1



回答4:

For some reason editing the global c++ compiler settings didn't work for me. Following the instructions to modify the project-specific setting did work. See: Eclipse CDT C++11/C++0x support