Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: SFML ja C-kieli

Burton [02.02.2010 00:42:45]

#

Tervehdys!

Tutustuin hetki sitten grafiikkakirjastoon nimeltä SFML. Se vaikuttaa todella pätevältä viritelmältä, ja on paljon mieluisampi minulle kuin SDL - näin olen päätellyt tutoriaaleja ja dokumentointia lukiessani. Ongelmani kuitenkin on SFML:n C++-painotteisuus. Onhan siinä C-kielellekin tehty versio, mutta onko siinä vajavaisuuksia? C++-version paketti on nimittäin 28 megatavua, mutta C:n vain kuusi. Tämä kummastuttaa minua.

Toinen ongelmani on kirjaston käyttäminen C:llä. En saa millään yksinkertaista ikkunan avaamiseen liittyvää koodiani kääntymään. Yritän muuttaa C++:lla kirjoitetun oppaan esimerkkiä C:lle, mutta huonoin tuloksin. Voisiko joku auttaa minua tai linkata C-ystävälliseen tutorialiin?

Burton [02.02.2010 00:50:01]

#

Annan esimerkin. Jos joku viitsii kääntää tämän C:ksi, saan varmaan juonesta kiinni ja osaan tulevaisuudessa soveltaa muiden koodirakenteiden kanssa.

////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window.hpp>


////////////////////////////////////////////////////////////
/// Entry point of application
///
/// \return Application exit code
///
////////////////////////////////////////////////////////////
int main()
{
    // Create the main window
    sf::Window App(sf::VideoMode(800, 600, 32), "SFML Window");

    // Start main loop
    bool Running = true;
    while (Running)
    {
        App.Display();
    }

    return EXIT_SUCCESS;
}

Metabolix [02.02.2010 01:08:42]

#

Mikä tarkalleen on ongelmana? C-paketin sisällön perusteella näyttäisi, että tarvitsee vain valita oikeat otsikkotiedostot (hpp vs. h), muuttaa koodi C:ksi (oliot osoittimiksi, sprite.GetX():n tilalle sfSprite_GetX(sprite)) ja linkittää oikeat kirjastot (csfml-*).

Edit: Esimerkkiohjelmasta on C-kielinen versio CSFML:n dokumentaation etusivulla. Paketin osannet itsekin ladata SFML:n sivuilta.

Onko jokin erityinen syy käyttää C:tä? Kirjasto esiintyy paljon paremmin edukseen C++:lla, onhan siinä sentään käytetty abstrakteja rajapintoja ja muita hienouksia, joista C-versiossa ei pääse lainkaan nauttimaan.

Pakettien kokoero saattaa osin johtua esimerkiksi siitä, että C++-koodista tulee yleensä paljon enemmän debug-infoa. Suurin ero on juuri *-d.*-tiedostoissa, ei-debug-versiot ovat suunnilleen yhtä isot molemmilla kielillä.

Burton [02.02.2010 14:54:17]

#

No ainoa syy taitaa olla se, etten ole koskaan paneutunut C++:n maailmaan. Osaamiseni sen suhteen on aika pitkälti nollaluokkaa.

Kiitos kuitenkin vastauksesta. Sait myös minut ajattelemaan, josko siirtyisin vanhasta kunnon C:stä C++:n puolelle. Ei sen opetteleminen varmaan kauhean vaikeaa voi olla, kun osaa jo kielen edeltäjän. :-)

alottelijaa [02.02.2010 15:15:10]

#

opettele ihmeessä. Ei se siirtyminen vaikeeta ole kunhan opettelee luokkien käytön :). Ja kun osaat jo perusteita suosittelen vilkaisemaan Effective C++ kirjaa mistä ainakin itse opin paljon uutta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta