Code-completion doesn't work in Eclipse CDT Oxygen - eclipse-cdt

I expect code-completion must provide me suggestions for class names and (previously declared) variable names by pressing Ctrl+Space. But it doesn't (see sample below). What I do wrong?
PS: This issue is different from those one.

Related

Unable to type #include statements properly in the latest Windows version of Geany IDE

At the time of this writing, the newest version of the Geany IDE is 1.37.1 . I came across an issue when using Geany to code in C/C++. My PC had the following configurations:
OS: Windows 10
Keyboard Layout: EN_US
Language: EN_IN
When I type #include followed by a header name such as <stdio.h>, the IDE excludes the .h extension. I checked if the Drop rest of word on completion option is turned on under Edit->Preferences->Editor->Completions. I tried including headers using both <> and "". Also, extensions such as .txt also didn't work. Re-installing the IDE didn't work for me.
For anyone having the same issue and similar keyboard configurations, I recommend removing any other existing language packs. Typing language in the search bar brings up a number of options like '''add a language to this device''' and '''Edit language and keyboard options''' etc. Selecting the latter brings up the language section in the Settings app. If you have any other pack installed other than EN_US, select the pack and remove it, only if you are sure that you are using a US keyboard. Now restart the Geany IDE and try typing #include statements once again. The above approach worked for me.

c++ netbeans shows syntax errors, but compiles and runs correctly

I installed NeatBeans IDE 8.1 fresh for C++ development and began a blank new project. The code for the project is shown below. The code within the editor shows a syntax error, although when building, THE CODE RUNS PERFECTLY FINE.
Although iostream is imported correctly, and I can view iostream.h by clicking on it, std seems to be completely undefined. In fact, I cannot use any library without it showing a syntax error. I realize that having an std in front of cout is redundant, since I am supposed to be using namespace std, but I just wanted to show that it is not just the namespace. I am using a 64 bit MinGW compiler as my configuration as pictured below.
I have tried using all solutions online, such as Reparse project, but that and others do not seem to help rectify this issue. How can I make the editor show no syntax errors and build correctly?
I remember having this problem. I used to fix it by doing a "Run -> clean and build project".

Qt Creator IDE appears to be falsely marking reinterpret_cast<::GlobalType> as invalid

I am currently in the process of moving a number of class files from our Visual Studio source environment into Qt Creator (version 3.4.2).
I have made several changes to cater for the differences in the compiler (into MinGW). One thing that is puzzling me is that the the IDE is reporting a specific error (red underline) but still compiles fine.
I am pretty sure the issue is isolated to using reinterpret_cast<T> where T is a global namespace.
For example, the following line will show as incorrect in the IDE but will still compile:
::GetWindowThreadProcessId(window, reinterpret_cast<::LPDWORD>(&processId));
The tooltip states:
expected ';' got ':'
If I change the code to remove :: from LPDWORD the syntax highlighting disappears. This will be fine in the IDE:
::GetWindowThreadProcessId(window, reinterpret_cast<LPDWORD>(&processId));
I suspect this is a bug in the IDE. Is this a safe assumption?
I don't plan on changing the code style for using the global namespace.
Thanks to lisyarus's comment, I was able to find that this is in fact a bug in QT Creator. There is already a bug report here.
As I mentioned in the question, the bug doesn't stop you from compiling the code. You can, if you wish, add a space between < and ::.

Eclipse indexer shows error for perfectly running c code

I am using eclipse( kepler) for the development of c code. Within the code, I have some simple macro's which refers to the function's in other file (included as header). It builds and runs perfectly fine. But, eclipse editor comes up with the error symbol wherever the macro is used.
By, primary investigation, I came to know about this being the issue with the indexer. I believe, I am missing some settings in the eclipse for indexer. Anyone has clue about this?

QT Creator, syntax checking for c++11

How to turn off error highlighting (red wave under the code) for c++11 cycle range-based operators like that?
int myint[] = {1,2,3,4,5};
for (auto x : myint){/**/}
Hover prompt shows "unexpected token :". The code compiles perfectly.
Another issue - the autocomplete doesn't show unique_ptr in std:: namespace, though compiles OK.
Qt Creator 2.4.0 Based on Qt 4.7.4 (32 bit) Built on Dec 12 2011 at
01:10:32
I don't understand the line of reasoning in Andrew's answer. Why would customizing syntax checking make sense? The syntax is either correct given the context set by the compiler command line, or it is wrong. If it is wrong, it should be marked as such, if not, not. If correct code is marked as wrong, it is a bug, or at least unsupported feature, in the IDE, and it needs a fix, not "customization".
Having said that, the cited example
int myint[] = {1,2,3,4,5};
for (auto x : myint){/**/}
works fine here (fairly recent build from master branch).
Regarding the other comment on Kate: Kate's syntax highlighting is used by Qt Creator as fallback in cases where there is no more specific syntax highlighting available for a file. In the case of C++ (98/03/11) there is a real code model used, not Kate's definitions.
There is "syntax highlighting" (coloring) and there is "syntax checking" (wavy underlines). The syntax coloring does seem to be related to Kate as #Koying suggests, you can modify the colors and turn it off. As of Qt Creator 2.5.0 it doesn't seem to have a problem with most C++11 examples I paste off the web, although your example does indeed still have the underline:
http://labs.qt.nokia.com/2012/05/09/qt-creator-2-5-0-released/
Also unfortunately, at the time of writing (June 13th 2012, which is about a month after the release) the latest integrated SDK package is still installing Qt Creator 2.4.1 by default. :-/
If this is the boat someone is in and wants to try the latest, don't do what I did by wiping out your Qt SDK install using /opt/QtSDK/SDKMaintenanceTool! That wasted time on a reinstall, after which I executed a sudo rm -r /opt/QtSDK/QtCreator, then told the new Qt Creator release to install to /opt/QtSDK/QtCreator. I'll update this post if I hit a snag with that choice!
http://qt-project.org/wiki/Qt_Creator_Releases
BUT though it seems to work with many C++11 constructs it does nothing for your example nor the particular case I tripped across, which is the unspaced<nested<syntax>> for templates.
(Note: It may seem like a minor thing, but it's a big C++11 feature for me. I hate dealing with having to do tailspaced<nested<syntax> >...which led me to always do fullyspaced< nested< syntax > > on all templates to keep things consistent. Even simple cases like vector< int >. Now that they fixed the compiler, I'm ready to kill all of that whitespace noise.)
There doesn't seem to be any way to turn off the wavy underlines (unless you recompile Qt Creator??).
in qt-creator-2.5.0-src\src\plugins\cpptools\cppmodelmanager.cpp:
QTextCharFormat errorFormat;
/* disable error underline
errorFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
errorFormat.setUnderlineColor(Qt::red);
*/
// set up the format for the warnings.
QTextCharFormat warningFormat;
/* disable warning underline
warningFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline);
warningFormat.setUnderlineColor(Qt::darkYellow);
*/
Either way, it's an insane consequence of duplicating the work of the compiler in the IDE instead of having the two share front-end code. We live in the dark ages of software. Won't someone save us? [/rant]
Here's some of the relevant code (I think):
https://qt.gitorious.org/qt-creator/qt-creator/blobs/master/src/plugins/cppeditor/cpphighlighter.cpp
...and the lexer here, note the member _cxx0xEnabled:
https://qt.gitorious.org/qt-creator/qt-creator/blobs/master/src/libs/cplusplus/SimpleLexer.cpp#line80
Besides your for syntax, the template spacing is the only thing I've found in C++11 that causes the lines. That's major enough to me that I might just build my own QtCreator to address it!
If you're writing in C++11 you should change from using QT Creator as the IDE to using Eclipse CDT. At least this is how I solved this problem. QT Creator doesn't seem to have any way to customize this real-time syntax checking. Eclipse on the other hand is extensively customizable in this regard.
Update: I think that QtCreator has improved its support for newer versions of C++ since this answer was given, so it is no longer correct. I can't delete it as it is an accepted answer.
Qt Creator is using the syntax highlighting definitions from the Kate editor (from KDE). See Tools-Options-Text Editor-Generic Highlighter.
If Kate has a definition for c++11, you can use it or you can develop your own.
Using MSVC compiler, you need to add the line:
/std:c++11
To your project's project.cxxflags configuration file, where project must be replaced by the name of your project. This file is located at the root of your project directory, you may have to create it if it does not already exist.
Remark: this setting is a MSVC parameter so the syntax would likely be different for other compilers.
Tested with Qt Creator 4.15.0-rc1 (April 2021) and Visual Studio 2017 on Windows, where the error:
`error: no member named 'optional' in namespace 'std'` when trying to use std::optional from header <optional>
disappear when adding /std:c++17 (std::optional was added in C++17).