Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 23:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Visual Studio 2012: automatisches einbinden von Headerdateien?

Discussion on Visual Studio 2012: automatisches einbinden von Headerdateien? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2012
Posts: 23
Received Thanks: 1
Visual Studio 2012: automatisches einbinden von Headerdateien?

Mir ist aufgefallen, dass ich, ohne bestimmte Headerdateien einzubinden, manchmal trotzdem Objekte und Funktionen nutzen kann wie z.B. cout aus iostream oder exit() bzw. abort() aus cstdlib/stdlib.h.

Kann's vielleicht sein, dass VS 2012 die automatisch lädt?
habe ein normales WIN32 Konsolenprojekt ohne Headerdateien und sonstiges erstellt. Und was hat es mit dem Ordner "Externe Abhängigkeiten" auf sich? dort sammeln sich verschiedene Dateien und darunter auch cstdlib und iostream.
-Epitaph- is offline  
Old 08/10/2012, 00:44   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Joa, dann wird VS12 das wohl so tun.
Externe Abhängigkeiten kenne ich aus virtuellen Sprachen wie C# oder Java, wo im Projekt auch immer ein Ordner für externe Abhängigkeiten ist, die, was den Standard angeht, automatisch eingebunden werden, wenn sie im Projekt verwendet werden.
VS12 macht das gleiche dann wohl nun auch für C++.
MrSm!th is offline  
Old 08/10/2012, 01:00   #3
 
elite*gold: 0
Join Date: Jun 2011
Posts: 265
Received Thanks: 50
Finde ich persönlich nicht gut dass VS2012 das macht.
Kosic is offline  
Old 08/10/2012, 08:07   #4
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Kann ich nicht bestätigen. Visual Studio 2012 Release Candidate erstellt mir folgende Dateien bei einem Win32 Projekt:

stdafx.h
Code:
#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
targetver.h
Code:
#pragma once
#include <SDKDDKVer.h>
<ProjektName>.h
Code:
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}
stdafx.cpp
Code:
#include "stdafx.h"
Ich lediglich Zugriff auf std::nullptr_t.

Und "Externe Abhängigkeiten" werden nicht automatisch eingebunden, ganz im Gegenteil. Das ist einfach eine Liste aller eingebundenen Header, die nicht direkt zu deinem Projekt gehören.
Nightblizard is offline  
Old 08/10/2012, 12:58   #5
 
elite*gold: 0
Join Date: May 2012
Posts: 23
Received Thanks: 1
Quote:
Originally Posted by Kosic View Post
Finde ich persönlich nicht gut dass VS2012 das macht.
Find ich auch nicht gut. Besonders wenn man C++ lernt >.>
Man will ja auch lernen wo sich was befindet und so

Hab nochmal einen Test mit einem ganz neuem LEEREM WIN32 Konsolenprojekt gemacht in der ich nur eine .cpp mit dem Code:
Code:
#include <iostream>

using namespace std;

#define TEST cout << "Ist schon inkludiert" << endl;

#ifndef _CSTDLIB_
#ifdef TEST
#undef TEST
#endif
#define TEST cout << "Ist NICHT inkludiert" << endl;
#endif

int main(void)
{

	TEST

	return 0;
}
erstellt habe und beim ausführen steht dort, dass cstdlib bereits inkludiert wurde (aber halt nicht von mir :/ ).
Entweder wird es durch iostream oder durch VS 2012 inkludiert... wäre nett wenn jemand ne lösung weiß wie ich das ausschalten kann, da das fürs lernen echt bissle blöd ist.
-Epitaph- is offline  
Old 08/10/2012, 18:03   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Ob cstdlib eingebunden wird, weiß ich nicht, versuch es doch mit etwas eindeutigem wie std::string.
Wenn der Typ bekannt ist, bindet dein VS die Header wohl automatisch ein.

Also ich fände das sehr angenehm, wenn mein VS das täte.
MrSm!th is offline  
Old 08/10/2012, 18:36   #7
 
kissein's Avatar
 
elite*gold: 0
Join Date: Sep 2005
Posts: 426
Received Thanks: 87
Quote:
Originally Posted by -Epitaph- View Post
Mir ist aufgefallen, dass ich, ohne bestimmte Headerdateien einzubinden, manchmal trotzdem Objekte und Funktionen nutzen kann wie z.B. cout aus iostream oder exit() bzw. abort() aus cstdlib/stdlib.h.

Kann's vielleicht sein, dass VS 2012 die automatisch lädt?
Microsoft hat mit VS2012 seit Augenmerk wieder etwas mehr auf C++ gerichtet was ja in den letzten Jahren mit dem .Net etwas untergegangen ist und möchte unter anderem die Produktivität in C++ weiter erhöhen. Wird wohl noch weitere Featurepacks hierfür von Microsoft geben.

Gab hierzu mehrere direkte/indirekte Statements auf dem "C++Day in Bad Homburg"
kissein is offline  
Old 08/10/2012, 22:46   #8
 
elite*gold: 0
Join Date: May 2012
Posts: 23
Received Thanks: 1
Quote:
Originally Posted by MrSm!th View Post
Ob cstdlib eingebunden wird, weiß ich nicht, versuch es doch mit etwas eindeutigem wie std::string.
Wenn der Typ bekannt ist, bindet dein VS die Header wohl automatisch ein.

Also ich fände das sehr angenehm, wenn mein VS das täte.
Also ich kann nen string ohne die headerdatei aber mit dem namespace deklarieren und initialisieren aber nicht über cout ausgeben.
Vielleicht bild ich mir auch nur was ein... Das erste mal als mir das aufgefallen ist, war als im Buch als Aufgabe stand, dass ich den namespace std weglassen und dann die Ausgabe mit cout testen sollte und das hat dann ohne den namespace funktioniert... hab dann auch noch glaub ich die headerdatei entfernt und es hat geklappt. In nem neuem Projekt dann allerdings nimmer... Und nu stand in nem andren Buch dass man für abort()/exit() cstdlib inkludieren müsste aber es geht auch ohne.
Vielleicht isses nur nen Fehler im Buch oder es liegt an den neuen Compilern.
kam mir halt nur bissle komisch vor.
Aber was solls ^^

Trotzdem danke für die Antworten
-Epitaph- is offline  
Old 08/10/2012, 23:08   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Also wenn du ohne explizite Namensauflösung cout verwenden kannst, ist das definitiv ein Fehler.
Entweder musst du über eine using/using namespace direktive den Namensraum angeben oder halt std::cout, aber ganz ohne geht nicht, das widerspricht dem Standard.

Das mit dem String hab ich nicht verstanden.
MrSm!th is offline  
Reply


Similar Threads Similar Threads
Qt in Visual Studio 2008 Express einbinden
09/20/2010 - .NET Languages - 4 Replies
Ja wie die Überschrift es schon sagt Qt in Visual Studio 2008 Express einbnden. Wie kann man das machen ... Habe schon gegoogelt aber leider habe ich das alles nicht kapiert. Kann das jemand ausfürhlich mir erklären : )
Visual Studio
12/08/2009 - .NET Languages - 7 Replies
Moin, wollte ma fragen, welche Version ihr vom Vusial Studio benutzt ;D ich benutze momentan 2008. Steige wahrscheinlich bald auf 2010 um, aber das gibts ja leider noch nicht auf Deutsch *g*
MS Visual Studio.
11/18/2005 - Main - 0 Replies
http://forums.microsoft.com/MSDN/ShowPost....12660 6&SiteID=1 :rolleyes: love it!



All times are GMT +2. The time now is 23:13.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.