This is an approach to use Microsoft Visual C++ 2010 Express to develop for Arduino. This lets you make use of Microsoft's Free C++ IDE with its advanced code completion & intellisense features to program for Arduino platform as you get into more complex sketches & library development.
If you own a full paid version of Microsoft Visual Studio, you should probably take a look at https://playground.arduino.cc/Code/VisualMicro which has more capabilities. Visual C++ Express doesn't seem to allow these add-ins.
The basic approach is to code in Visual Studio & complie and upload using Arduino IDE. Arduino IDE has a very convenient "Use External Editor" option enables you to edit sketches elsewhere & simply click compile/upload buttons in the IDE. While, i'm certain it's feasible to call a "custom make script" from Visual C++, the Arduino IDE is so convenient that I haven't really bothered creating one :)
1. Setup Visual C++ Express to recognize .ino files as C++
This gives you syntax highlighting & turns on intellisense in your sketch. In Visual C++ Express go to - Tools Menu->Options->VC++ project settings. Under the Extensions to include setting in the right hand side, add ;.ino at the end.
2. Create an "Empty Project" in Visual C++ Express
Ensure it's completely empty & has no templates & stuff created automatically. This Project will contain your Arduino Sketch. You can do this by File Menu->New->Project->General->Empty Project
$(ProjectDir) <Arduino>\libraries\Wire\utility <Arduino>\libraries\Wire <Arduino>\libraries\Stepper <Arduino>\libraries\SPI <Arduino>\libraries\SoftwareSerial <Arduino>\libraries\Servo <Arduino>\libraries\SD\utility <Arduino>\libraries\SD <Arduino>\libraries\LiquidCrystal <Arduino>\libraries\Firmata <Arduino>\libraries\Ethernet\utility <Arduino>\libraries\Ethernet <Arduino>\libraries\EEPROM <Arduino>\hardware\tools\avr\lib\gcc\avr\4.3.2\include-fixed <Arduino>\hardware\tools\avr\lib\gcc\avr\4.3.2\include <Arduino>\hardware\tools\avr\avr\include\util <Arduino>\hardware\tools\avr\avr\include\compat <Arduino>\hardware\tools\avr\avr\include\avr <Arduino>\hardware\tools\avr\avr\include <Arduino>\hardware\arduino\cores\arduino
Step f: Finally in a similar manner, under Source Directories add $(ProjectDir)
4. Create your Sketch
To add a sketch - right-click either the Source Files or Header Files folders in the Solution Explorer, click add-item & add either a C++ file or a header file. Make sure you name your main sketch file as .ino and ensure it is saved under a folder with the same name without the ino extension. This is a requirement of Arduino IDE
5. Making sure Intellisense can pick up processor-specific defs
Add the following snippet at the top of each header file-
#ifndef __AVR_ATmega328P__ #define __AVR_ATmega328P__ #endif #ifndef Arduino_h #include <Arduino.h> #endif
__AVR_ATmega328P__
corresponds to the processor in Arduino Uno, if you're using another processor, just lookup the right define in the io.h file - [@<arduino>\hardware\tools\avr\avr\include\avr\io.h
6. Open in Arduino IDE & click Compile/Upload
You can go ahead and make any changes you want in Visual C++ Express and the Arduino IDE will pick it up. The only key requirement within Arduino IDE seems to be that the sketch must be placed under a folder of the same name :)