Niestandardowy kod C++


(Hiciorman) #1

Kiedyś robiłem programy z książki z 2003 roku i wtedy działały ok ale teraz nawet jak wklejam kod z płyty to zawsze znajdzie jakiś błąd. Zaszły jakieś zmiany w c++? To w ogóle możliwe?


(Xeon Bloomfield) #2

Używasz tego samego kompilatora? Jak tak, to może jakieś modyfikacje w nim porobiono...

Z tego co ja sprawdzałem wszystkie programy z starych książek działały... (ten sam kompilator - tyle, że inna wersja)


(flaszer) #3

Podaj przykładowy kod który Ci nie działa.


(Johny) #4

W C++ nie ma zmian,co najwyżej możesz mieć żle skonfigurowany kompilator,jeśli masz kod w czystym c++,to powinien on działać,tylko to musi być czysty C++,jeśli w kodzie masz jakieś niestandardowe biblioteki,to to jest przyczyną błędów,można też trafić na jakiś felerny kompilator,żle sygnalizujący błędy.


(Sawyer47) #5

Ostatnie drobne zmiany w C++ miały miejsce w 2003. Tak jak powiedział flaszer, podaj kod to się zobaczy. Możliwe, że przykłady w książce nie są w pełni zgodne ze standardem, np. w Symfonii niektóre są niepoprawne z punktu widzenia standardu, bo Symfonia powstawała wcześniej, a potem była jedynie uaktualniania. A co to za książka, którą Ty posiadasz?


(Hiciorman) #6

no to tak wcześniej używałem Microsoft Visual Studio 2003 a teraz próbowałem na wersji 2008 tego samego programu. Z książki już drugi program nie działał bo pierwszy to był Hello World i akurat ten musi działać a tutaj ten program cały kod ja go nie pisałem jest prosto z płytki dołączonej do książki:

// This is the main project file for VC++ application project 

// generated using an Application Wizard.


#include "stdafx.h"

#include 


#using 

#include 


using namespace System;


__gc class animal

{

public:

    int legs;


    void SetName(String *Name) { strName = strName->Copy(Name); };

    String* GetName() { return strName; };

private:

    String *strName;

};


// This is the entry point for this application

int _tmain(void)

{

    // TODO: Please replace the sample code below with your own.

    animal *Cat, *Dog;


    Cat = new animal;

    Dog = new animal;


    Cat->SetName("Cat");

    Cat->legs = 4;

    Dog->SetName("Dog");

    Dog->legs = 4;


    Console::WriteLine("Animal 1");

    Console::Write("Name ");

    Console::WriteLine(Cat->GetName());

    Console::Write("Legs ");

    Console::WriteLine(Cat->legs);

    Console::WriteLine();


    Console::WriteLine("Animal 2");

    Console::Write("Name ");

    Console::WriteLine(Dog->GetName());

    Console::Write("Legs ");

    Console::WriteLine(Dog->legs);

    Console::WriteLine();

    return 0;

}

(Johny) #7

główna funkcja to void main(),nie _tmain(void),to samo _gc class animal,zamiast class animal,to są jakieś niestandardowe wywołania funkcji,jeśli konfiguracja kompilatora nie jest odpowiednio ustawiona,to tego nie obsłuży i masz błędy,jeśli dalej się wywala,to są problemy ze wskażnikami - naruszenie ochrony pamięci.

Zamiast np.

String *Dog - to tylko wskażnik dać String Dog[5];

Dog[5] to tablica 6 znaków (od 0 do 5)


(Hiciorman) #8

może być tak jak piszesz dziwnie to napisane ale tak było w książce to takie dodatkowe pytanie jaki projekt otwierać bo wybór jest duży teraz w tych nowych kompilatorach i są troszeczkę inaczej opisane niż kiedyś zresztą jak ktoś może to niech poda tytuł sprawdzonej książki która ma poprawnie napisane programy.


(Fiołek) #9

Ten kod to nie jest C++ :wink: To Microsoftowy twór C++/CLI. Odpowiedni projekt to CLR Console Application.


(pebal) #10

To jest kod C++ wykorzystujący Managed Extensions. Sam Managed Extensions został już zastąpiony przez język C++/CLI w nowszych wersjach Visual Studio.

Proponuje pisać kod w czystym C++ a z rozszerzeniami dla kodu zarządzanego dać sobie spokój.


(Airborn) #11

Hiciorman , proszę poprawić tytuł tematu na konkretny, mówiący dokładnie o problemie. W przeciwnym razie temat zostanie usunięty.


(Hiciorman) #12

to by się zgadzało bo książka Microsoftu to poproszę jeszcze tytuł jakiejś książki gdzie programy pisane są w czystym C++ czyli taka która dałaby dobre podstawy słyszałem że Symfonia C++ jest dobra


(pebal) #13

Tutaj masz dostępny bardzo obszerny i praktyczny kurs języka C++

http://www.amatorskie-ebooki.oz.pl/pobierz/kursc++.pdf


(Hiciorman) #14

spróbowałem kilka programów i bez problemu odpalają dziękuje bardzo na pewno przeczytam może nie cała ale większą część tej książki