Visual C++ 2008 express a namespace std

0

Witam,
Od około 10 lat programuję w C++. Ostatnio ze względu na kwestię zgodności bibliotek zostałem zmuszony do zmiany IDE na VC++ 2008 EE. No i zaczęło się... nie jestem w stanie nawet wypisać literki na ekranie.
Czy ktoś może mi pomóc? Co w tym kodzie jest źle, że nie działa? Program w trybie konsolowym 32bit.

#include "stdafx.h"
#include <iostream.h>

int _tmain(int argc, _TCHAR* argv[])
{
cout<<"A"<<endl;
return 0;
}

Będę wdzięczny za jakąkolwiek pomoc.

0

A jak pokazesz komunikat bledu to bedzie latwiej.

0

może VS nie wspiera 15 letniego kodu?
<iostream>
i std::cout

0

Dzięki... :-D
Mała rzecz a cieszy... tak więc zawsze będę deklarował namespace'a do każdej biblioteki... nawet std <lol>
heh.... Microsoft... ;)

PS: przecież musi to tolerować i wykonywać, bo to jest w standardzie C++ ;)

0

Co jest w standardzie C++?
<iostream>? A i owszem.
<iostream.h>? Nie jest i nigdy nie było.

0

Wiem wiem, tylko, próbowałem wpierw z <iostream> bo było w dokumentacji i też nie działało. Jednej rzeczy nie mogę qrwa zrozumieć, dlaczego Micosoft zawsze tak olewa wszystko. Jest super zrobiona dokumentacja, po kilka przykładów do każdej funkcji... a nigdzie nie ma, że trzeba deklarować, że się używa standardowej (std) przestrzeni nazw...

0

Jesli dokumentacja MS to 'olewanie wszystkiego' to chcialbym zobaczyc ta, ktora nie olewa ;) Jak uzywasz <iostream> to oczywiste, ze wszystkie elementy sa w std.

0

Nie no... generalnie jest super. Ale wiesz jak to jest... czasem pominięcie jakiegoś szczegółu jest naprawdę denerwujące. Dobra dokumentacja jest choćby w Turbo C++. Przynajmniej mi przypadła do gustu, albo to po prostu przyzwyczajenie.

0

Przecież to jest w standardzie,sam pisałeś że programujesz 10 lat w c++ to masz problemy z takim dziecinnym i prostym problemem?Jest on omawiany na poczatku wielu ksiazek o programowaniu w c++

0

No widzisz... jaki jestem głupi. Jakoś nie zauważyłem, bo w BDS czy Code Blocks nie musiałem definiować nmspca std. Myślałem, że problem leży po stronie plików nagłówkowych, które w bardzo dziwny sposób dodaje się w VC++. A jeśli chodzi o książki, to kupiłem dwie do VC++ i żadna nie używa w przykładach iostream, tylko rozwiązań platformy net. A o przestrzeniach nazw nie ma mowy.
Najważniejsze, że Ty jesteś nieomylny. Zazdroszczę.

0

szczerze powiem, ze nie wiem co jest w BDS, ale w sposobie traktowania C++ w tym przypadku miedzi msvc a g++ czy mingw, raczej różnic nie zauważam, wiec jesli cos jest dziwne - to wybacz, ale BDS..

"normalny"*) kompilator C++ z ustawiona zgodnoscia ze standardem, w momencie "zaczęcia czytania pliku" startuje w przestrzeni nazw "" (pustej, bez nazwy, globalnej, jak zwal tak zwal) i dopiero gdy przeczyta jakiekolwiek "namespace xxx{" to zaglebia sie w tę przestrzen i nastepujace po tym definicje traktuje jako umieszczone w niej'że.

kazdy naglowek z libstd, tak jak wspomniany <iostream>, dla porządku, ma w sobie namespace std { /i tu cala tresc naglowka/ }. czy to ifstream, czy to zwykly string, siedza one w std:: **)

piszac swoj plik z kodem, jezeli sam siebie wcisniesz do jakiejs przestrzeni nazw (otaczajac swoj kod namespacem), widzisz calosc natychmiast bez prefixow, bez usingow. jednak jesli sam siebie nie wcisniesz w namespace std{} i/lub nie napiszesz using std;, to nie masz prawa być w stanie odwolywac sie do definicji standardowego stringa bez użycia prefixu std:: ----- bo kompilator nie ma prawa domyslać sie że chodzi o ten wlasnie string - przeciez mozesz miec klase string jeszcze swoja na boku, albo trzy klasy string pochowane w roznych bibliotekach z ktorych tez korzystasz..

*) nie twierdze ze msvc czy g++ sa normalniejsze, kazdy z nich ma swoje odchyly..
**) mowie o naglowkach obecnego c++ czyli <iostream> czy <cmath> nie <iostream.h> czy <math.h>, ktore istnieja tylko aby dalo sie jeszcze kompilowac kody ze starych wersji standardu

0
quetzalcoatl napisał(a)

jednak jesli sam siebie nie wcisniesz w namespace std{}
Nieładnie o takich rzeczach pisać ;) Standard tego nie lubi:

standard napisał(a)

It is undefined for a C++ program to add declarations or definitions to namespace std or namespaces within namespace std unless otherwise specified.
W dodatku wyjątków od tej reguły wiele nie ma.

0

omg, ale żart.. faktycznie, przeoczyłem to:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1