Is there a Visual Studio plugin that prevents writing unmatched { and } - c++

Often while writing or editing C++ code in VS I end up messing up by not having matching braces { or }. So I was wondering is there a tool that prevents writing { in a sense that when you press { key it automagically generates
{
}
and puts cursor between braces. Ofc one might want { in a string, so tool would have to allow that, also forcing closing of the string would be nice feature(I think Eclipse has it).

Visual Assist X does this, but it's not free.
On the other hand, you can try to write a macro for it yourself. It's easy enough to write a macro, although it's very difficult to get near-100% accuracy.

Visual Assist X does this and a lot more useful things for C++ developers, but unfortunately it's not free.
However, there is a free Brace Completer extension written by Joel Spadin that does precisely this. Download it here from the Visual Studio Gallery. It's an excellent product.
His description does mention that Microsoft's Productivity Power Tools extension now includes brace completion functionality, but that's a pretty heavy extension. Since I don't use or want most of those other features, I prefer to continue using Joel's one trick pony.
Also, it's never been clear to me from the description of PPT whether it works with C++ code. Most of the extensions focus on C# and VB.NET, which is nice as far as it goes, but doesn't help us C++ devs much. Joel's extension works great with C and C++.
Finally, never fear if you do accidentally mis-match a pair of braces. All versions of Visual Studio come with a handy tool that can catch mistakes like these. It's called the compiler. :-)

A very very simple plug-in would be
When typing { directly type } then head back to fill in the scope.
Same goes for ( and )
Never a mismatch.

ReSharper does this too, but again its not free.
Not sure if CodeRush Xpress does it, it probably does as it does similar stuff to ReSharper. There is a free version of that.
For more information on that look here:
CodeRush Xpress

Related

IntelliSense in Visual Studio C++

I've always loved IntelliSense in C# in Visual Studio 2013. I'm not only talking about autocomplete function but also about those methods' descriptions (documentation's excerpts I suppose) viewed in autocomplete box. For example when I write:
List<int> l = new List<int>();
l.Add
Then I get a nice explanation:
Adds an object to the end of the System.Collections.Generic.List.
Also hints when calling some method are very useful (how many overloads, types of parameters).
But lately I decided to write some C++ code in Visual Studio 2013 and I see that those methods' descriptions are not visible. For example when I write:
string s;
s.length
all I get is autocomplete + function definition (return type and types of parameters). No information about what does this function do whatsoever. It's not something I can't live with. I know what .length() does :-) but collections in STL have many functions and it would be very very nice to have their descriptions (I know they can't replace whole documentation, but some comment on applications would be very nice) in Visual Studio, not only on www.cplusplus.com/reference/
So my question is this: is it possible in Microsoft Visual Studio to make IntelliSense work with C++ exactly as it works with C#?
Unfortunately, I have never seen any code hinting tool which works with C++ with as much detail as IntelliSense works with C#. There certainly are tools which can provide you with basic code hinting for std:: elements, but nowhere as detailed. Ive used codelite 2.0 in the past and its ok, but thats an entire IDE and provides basic code completion, probably the same as using VS2013
You could add extensive comments to the std header files MSVC ships with.
In my experience comments directly beside a method show up.
This would be a big project, and ideally you'd want to fold it back to MSVC sources and then to their sources so it would persist between versions.

Visual c++ express 2010 Highlighting

Visual C++ does not highlight userTypes by default like; vector or MyCustomType; I've gotten used to this in C# and am wondering is there some way to get it to highlight userTypes for c++. I have checked in the fonts and color settings; User Types is set to a color but it has no affect in the editor.
No, there is no way to do this in Visual Studio 2010.
The reason is probably because C++ is notoriously hard to parse and determining what tokens are class names would require a lot of processing. This was probably deemed impractical because it would be too slow, though I can only guess.
This absolutely CAN be done!
I do it all of the time with my C++ types because I have my own typedefs for any type which is not strictly defined (pretty much all of them). Defining my own types prevents future incompatibilities (or at least mitigates them), as well as helps with portability. However, it requires an extra step before the types are highlighted properly.
Simply create a plain text usertypes.dat file in the same directory as devenv.exe using a standard text editor.
Put one type name on each line.
Then restart the IDE.
There is also a tool that manages this if you have complex needs that can be found at:
http://msmvps.com/blogs/p3net/archive/2010/06/27/updateusertype-visual-studio-addin.aspx
I used to use Visual Assist X for highlighting and intellisense while coding C++ projects that use a lot of templates.. This used to help me quite a bit.
http://www.wholetomato.com/downloads/
You could give it a try. But I must say it relatively reduces the speed of VS. Install the free trial and if you don't like it you can always remove it..!

How to migrate/convert a code of C++ ,built on Borland 2007 to Visual Studio 2010

Please guide me, as how to convert a C++ code of Borland 2007 in to Visual Studion 2010 code. I just need to ask, whether to write all th code again for 2010 or is there any shortcut for this conversion/migration.
i did and it worksd for me-
remove .h from include
do not do it for other libraries,
remove clrscr(); everywhere and replace by system("cls");
finally after writing all #include stuff add this-
using namespace std;
it allows you to do things like cin>> cout<< etc.
If the code was written portably to begin with, there should be no issues. Other than that, all I can say is to run the code through Visual Studio's compiler and see if you get errors or anything of that nature.
After that, test the output to ensure you're getting correct behavior.
Are you using any Borland proprietary components?
If so, I'd say you're out of luck. You'd have to replace those components, and this is likely not to be easy. I should say you may not find a tool that can automatically "translate" these.
If not, it should be easier. But be aware that Borland compiler has support for many things that are not C++ standard. If your code is portable enough, you'll be fine just recompiling it under VS. You might have to change some header files, replace some pragmas, but nothing too complicated.
If you're using the Borland GUI (TButton, etc) then you have some real work to do. Every one of them will need to be replaced with something Visual Studio knows - most probably MFC. About the time Visual C++ 4 was released I actually wrote a giant set of scripts (mostly using sed and awk) to convert a large codebase - it was not pleasant, the parameters are in different orders and the methods return slightly different types. It was worth it in that case - tens of thousands of lines of code and a strong business desire to switch tools. In your case since you say you have a "simple windows form with new controls" I would say start a new project, build the form, then copy your old code in - entire files for classes and business logic, clumps of lines for event handles in the gui. Test very carefully.
Also, the default MFC look and feel isn't the same as the Borland default look and feel. On that long ago project we had to look identical so we had to play with a lot of properties and options. Be sure to ask your bosss if this matters.

How do I automatically clean up code in C++?

I'm working as a TA in an introductory programming class, and the students tend to submit their programs as either one line, or without any indentation. Is there any tool that allows me to insert indents and things like that automatically? (We're using C++ and VisualStudio)
You're after a pretty printer. I'd suggest Googling for C++ pretty printer, and looking for something that meets your requirements (price, platform).
As an aside, you may find that deducting marks for poorly formatted code will work just as well. Students need to learn that good code layout is an important part of writing maintainable code.
Rather than answering your question I will advise:
Don't let them do that.
Making their code readable for human beings is a part of programming, and you are fully justified in grading them on it. You might want to point them at the pretty printers listed in the other answers, however. Just to be nice.
Select the entire file (Ctrl-A) and then hit Ctrl-K Ctrl-F, which is essentially format the entire document.
EDIT: Of course in Visual Studio IDE
There is a gnu program called indent, usually shipped with linux but also available here (gnu indent) and available under Cygwin.
However, you are using VS, so you could use it to format code. They have hidden the feature just a bit: Edit -> Advanced -> Format Document, or Control/E, D.
If you need to do this in batch mode, try using astyle, also available in the Cygwin installer.
In Vim it's gg=G.

C++ code formatting

I've been using VS2005 and VS2008 now for a while, with C#. Without any additional tools I could hit ctrl k + d and the code would nicely reformat. Why doesn't C++ do this?
It's the same Visual Studio after all. Is there a way to enable it?
A second part of this question is related, for those who've been using resharper with C#, is there a similar tool for C++?
You can use Ctrl-K+Ctrl-F for "format selection".
Link
It's probably there, but mapped to a different keyboard shortcut. For example, on my VS2008 install Ctrl+K,D doesn't map to anything but Ctrl+E,D maps to the Edit|Advanced|Format Document command.
You can always use AStyle to format your code. Works great!
For me it's always been select text, CTRL + K, F. It doesn't do as well as in Visual C# though; there are no customization options beside the most basic ones.
Edit: in 2017 this answer seems outdated. I recommend clang-format for "anything", for "anyone".
Original answer:
Ontopic: In VS2008 Express Format Selection is ALT+F8 and CTRL+K, CTRL+D is mapped to Format Document. It's probably the same in professional versions of VS2008.
Less ontopic: I tend to avoid source code formatters for C++ as I feel they generally often does more harm than good. Why? Codeformaters has to "read" the code and understand what the different code statements do. This is quite easy in e.g. Java where the syntax is straight forward. C++ is a very complex language. There's 10 ways to do just about anything. You can use macros, defines, typedefs and whatnot. Classes are usually defined/declared in two different files. This is also the reason that Intellisense seems to fail quite often - VS2008 fails parsing the code correctly. It's very hard for an IDE to know what all statements is and how to format them. Although it may work ok most of the time, you can be pretty sure that it will give bad results now and then. I'm guessing Microsoft didn't spend too much time customizing the code formatter for C++ as they realize that most C++-programmers do this by hand anyways. I rarely miss it, except when some co-worker of mine isn't following the company standard.
**For C/C++ code formatting you can use bcpp [ apt-get install bcpp ].
This program will run under Linux/Unix and MS DOS V3.3
There is config file so you can be creative.
**Interesting tool for C/C++/C#/Java proposed by Qt is astyle
[ apt-get install astyle ]