Upload
wagner-spigotti
View
228
Download
0
Embed Size (px)
Citation preview
8/4/2019 Visual C__ 2008
1/21
VISUAL C++ 2008VC++ 9.0
Fabio GaluppoSoftware Engineer (Im a programmer!)
Visual C++ MVPC/C++ Brasil Community Member
8/4/2019 Visual C__ 2008
2/21
Whats new in Visual C++ 2008
IDE & Controls Dialog boxes that are created in ATL, MFC, and Win32
applications now comply with the Windows Vista styleguidelines
The ATL Project wizard now has an option to registercomponents for all users
Writing to the registry can be redirected
The Class Designer now has limited support for nativeC++ code
http://msdn2.microsoft.com/en-us/library/bb384632.aspx
http://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspx8/4/2019 Visual C__ 2008
3/21
Whats new in Visual C++ 2008
IDE & Controls
http://msdn2.microsoft.com/en-us/magazine/cc163402.aspx
http://msdn2.microsoft.com/en-us/magazine/cc163402.aspxhttp://msdn2.microsoft.com/en-us/magazine/cc163402.aspxhttp://msdn2.microsoft.com/en-us/magazine/cc163402.aspxhttp://msdn2.microsoft.com/en-us/magazine/cc163402.aspx8/4/2019 Visual C__ 2008
4/21
Whats new in Visual C++ 2008
Libraries STL/CLR Library
Visual C++ now includes the STL/CLR Library.
MFC Library
Windows Vista supports Common Controls. Over 150 methodsin 18 new or existing classes have been added to supportfeatures in Windows Vista, or to improve functionality incurrent MFC classes.
C++ Support Library
C++ introduces the marshaling library.
ATL Server
ATL Server is released as a shared source project.
http://msdn2.microsoft.com/en-us/library/bb384632.aspx
http://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspx8/4/2019 Visual C__ 2008
5/21
Whats new in Visual C++ 2008
Compiler The compiler supports managed incremental builds. The compiler supports Intel Core 2 microarchitecture Intrinsics support newer AMD and Intel chipsets. The __cpuid function is updated. The /MP compiler option reduces total build time.
The /Wp64 compiler option and __w64 keyword are deprecated. /Qfast_transcendentals /Qimprecise_fwaits
Linker User Account Control information is now embedded into manifest files for
executables by the Visual C++ linkerMFC Library The linker now has the /DYNAMICBASE option to enable the Address Space
Layout Randomization feature of Windows Vista
http://msdn2.microsoft.com/en-us/library/bb384632.aspx
http://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspxhttp://msdn2.microsoft.com/en-us/library/bb384632.aspx8/4/2019 Visual C__ 2008
6/21
Whats new in Visual C++ 2008 SP 1
MFC An expanded MFC library to support modern user interface
(UI) elements such as the Office Fluent UI, docking windowsand MDI tabbed windows similar to those used in some
releases of Visual Studio, enhanced toolbars, a rich new setof controls, support for controlling the overall visual style,support for desktop alerts, and much more.
Enables you to build MFC applications that have the visual
style of a Microsoft Office, Visual Studio, or InternetExplorer application. The MFC Feature Pack library providescustomizable toolbars, menus, keyboards, menu bars, anddocking panes.
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx8/4/2019 Visual C__ 2008
7/21
Whats new in Visual C++ 2008 SP 1
MFC
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx8/4/2019 Visual C__ 2008
8/21
Whats new in Visual C++ 2008 SP 1
MFC
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx8/4/2019 Visual C__ 2008
9/21
Whats new in Visual C++ 2008 SP 1
MFC
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx8/4/2019 Visual C__ 2008
10/21
Whats new in Visual C++ 2008 SP 1
MFC
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx8/4/2019 Visual C__ 2008
11/21
Whats new in Visual C++ 2008 SP 1
MFC
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspxhttp://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx8/4/2019 Visual C__ 2008
12/21
Whats new in Visual C++ 2008 SP 1
Standard C++ Library TR1 Extensions Implementation of the proposed extensions to the C++
ISO standard included in the draft document TechnicalReport 1. Microsoft's implementation includes supportfor fixed size arrays, function objects, hash tables,regular expressions, template metaprogramming,template types for aggregating related objects, andrandom number generation.
Portions of TR1 are scheduled for adoption in the
upcoming C++0x standard as the first majoraddition to the ISO 2003 standard C++ library.
http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx
http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx8/4/2019 Visual C__ 2008
13/21
Whats new in Visual C++ 2008 SP 1
Standard C++ Library TR1 Extensions Headers
http://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspx
http://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspxhttp://blogs.msdn.com/vcblog/archive/2008/02/25/channel-9-stephan-t-lavavej-digging-into-c-technical-report-1-tr1.aspx8/4/2019 Visual C__ 2008
14/21
STL/CLR
Bring STL idioms to CLR types Same containers
Same complexity
Same iterators
And
Containers expose .NET collection interfaces
IEnumerable, ICollection, IList, IDictionary
Usable outside a single assembly
8/4/2019 Visual C__ 2008
15/21
Marshaling
New library to simplify passing data betweennative and managed code
Template-based pattern that applies to any kind
of data Support lots of types out-of-the-box
System::String^
const char *System::String^
const wchar_t *System::String^
char *
System::String^wchar_t *
System::IntPtrHANDLE
System::String^
BSTR
System::String^bstr_tSystem::String^
std::string
System::String^std::wstring
System::String^ATL::CStringT
System::String^ATL::CStringT
System::String^ CComBSTR
8/4/2019 Visual C__ 2008
16/21
Stateless Transition
I want to marshal between managed and nativedata types for conversions that do not require anylifetime management or complex resourceallocation
#include
using namespace msclr::interop;
const char* sourcestring1 = teststring
System::String^ deststring1;// Convert const char* to System::String^ using
// TO to = marshal_as (from)
deststring1 = marshal_as(sourcestring1);
8/4/2019 Visual C__ 2008
17/21
Stateful Transition
I want to marshal between managed and nativedata types for conversions that require some kindof lifetime (memory, resource, etc)
#include
using namespace msclr::interop;
System::String^ sourcestring1 = teststring
const char* deststring1;
// Convert System::String^ to const char*
marshal_context ctx;
deststring1 = ctx.marshal_as(sourcestring1);
8/4/2019 Visual C__ 2008
18/21
Elegant Interop
STL/CLR + Marshaling = Better Interop
#include
#include
// Take generic collection and transform into container. No copying
void MyFunction(Generic::IList^ list )
{
cliext::collection_adapter cont( list );
cliext::list myList( cont.size() );
cliext::transform(cont.begin(), cont.end(),myList.begin(),
cliext::bind2nd(cliext::plus(),2));
}
8/4/2019 Visual C__ 2008
19/21
Security
Lets review /GS
/SafeSEH
DEP Compatibility (/NXCompat) Data Execution Prevention
New in Vista and Server 2008: ASLR
Linker switch (/DYNAMICBASE) to opt in to supportASLR
http://msdn2.microsoft.com/en-us/library/bb430720.aspx
http://msdn2.microsoft.com/en-us/library/bb430720.aspxhttp://msdn2.microsoft.com/en-us/library/bb430720.aspxhttp://msdn2.microsoft.com/en-us/library/bb430720.aspxhttp://msdn2.microsoft.com/en-us/library/bb430720.aspx8/4/2019 Visual C__ 2008
20/21
Build in Parallel
In 2005 Build Multiple Project in Parallel
Tools > Options > Project and Solutions > Build andRun > Parallel Project Builds
In 2008 Build Multiple Translation Units in Parallel
/MP or /MPn (where n is no. of CPUs) Project Properties > C/C++ > Command Line >
Additional Options
8/4/2019 Visual C__ 2008
21/21
Resources
Fabio Galuppo Blog http://fabiogaluppo.spaces.live.com/
VC++ Blog -
http://blogs.msdn.com/vcblog Visual C++ Developer Center
http://msdn2.microsoft.com/en-us/visualc/default.aspx
Comunidade C/C++ Brasil (Participe)
http://www.cbrasil.org/
http://fabiogaluppo.spaces.live.com/http://blogs.msdn.com/vcbloghttp://msdn2.microsoft.com/en-us/visualc/default.aspxhttp://www.cbrasil.org/http://www.cbrasil.org/http://msdn2.microsoft.com/en-us/visualc/default.aspxhttp://msdn2.microsoft.com/en-us/visualc/default.aspxhttp://msdn2.microsoft.com/en-us/visualc/default.aspxhttp://msdn2.microsoft.com/en-us/visualc/default.aspxhttp://blogs.msdn.com/vcbloghttp://fabiogaluppo.spaces.live.com/