C++ -kysymykset

Muu yhteisön välinen keskustelu.
lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka » Tue Dec 02, 2008 8:20 pm

Noniin, sain lopullisesti windows vista käyttikseni pois pelistä (koneen formatointikaan ei auttanut, pahensi vain tilannetta...) ja asensin linuxin (kubuntu) ja päätin siisrtyä kokonaan c++, joten tarvin apua, miten sillä koodataan linuxissa, käytän kade? editoria ja sillä tuon koodin kirjoitus onnistuu mainiosti, mutta haluaisin välissä kääntää koodiani, joten miten se tapahtuu?

Ja sitten, miten luodaan omia kirjastoja? Kun sain kehteltyä hyvin toimivan hahmon tietoja sisältävän systeemin, joka on melkeinpä valmis, ainakin pelini osalta. Tätä myös hyödyntäisin, kun teen uusia moduuleja, eli maailman jne... käsittelyyn. Myös olisi hyvä, jos kertoisitte myös muista ohjelmista, joista on hyötyä projektissa. Itse ainakin ymmärsin, että makefile:t ovat melkeinpä pakko, sekä ehkä joku versionhallintasofta, kun ohjelmaa alkaa jakamaan. Eli mielellään "täydellinen" kvaus, mitä tarvitaan oman ohjelman uudelleenlevittämisessä. Noin, tuossapa taisi olla kaikki kysymykset.

PS: sori tuplapostaus...

User avatar
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda » Tue Dec 02, 2008 11:04 pm

lukutoukka wrote:...sekä ehkä joku versionhallintasofta, kun ohjelmaa alkaa jakamaan.
En tiedä mitään Linuxille ohjelmoinnista, mutta muuten kyllä. Varsinaista versionhallintaa ei tarvita jos kehität softaasi yksikseen. Sen avulla voidaan pitää usean henkilön samaan koodiin tekemät muutokset kasassa helposti, mutta yhden henkilön kanssa sitä ei tarvita. Toki sitä voi käyttää jos haluaa, mutta siitä saatava hyöty ei ole välttämättä niin suurta että säätäminen kannattaa. Varmuuskopiot (ja tiedostojenvertailusofta) pitäisi riittää mainiosti.

Jos haluat jakaa softan jossain vaiheessa, niin yksi mahdollisuus on perustaa sille projekti esimerkiksi sourceforge.net:iin.
Ja sitten, miten luodaan omia kirjastoja?
En edelleenkään tiedä Linuxpuolella homman etenemistä, mutta eikö kirjasto tehdä samalla tavalla kuin windowsin puolellakin? Kääntäjälle kerrotaan, että koodisi käännetään kirjastoksi, ja kun sitä halutaan käyttää, jaetaan kirjastotiedosto ja siihen liittyvä headeri.
OoO

Astigma
Moderator
Moderator
Posts: 195
Joined: Sun Aug 26, 2007 5:56 pm
Location: Kuopio, Finland
Contact:

Re: C++ -kysymykset

Post by Astigma » Wed Dec 03, 2008 9:14 pm

Itse näkisin asian niin, että versionhallinta kannattaa aina, jos projektin ottaa yhtään vakavammin. Subversion-ohjelmistoon kannattaa siis tutustua.

Linux-puolella C++-ohjelmoinnista löytyy paljon juttuja netistä, mutta sieltä järkevän datan löytäminen onkin työlästä. Avainsana onkin Gnu autotools, joiden avulla saadaan helposti luotua kääntöasetukset projektille kuin projektille. Konffauksen jälkeen ohjelman kääntämiseen riittää suorittaa make-komento.

Varsinaiseen kääntämiseen tarvitset kuitenkin jonkun c++-kääntäjän Linuxiisi asennettuna. Lisäksi gnu autotools -työkalut tarvitsevat monia muita paketteja, joita en nyt ulkoa muista. Jos gcc:tä ei ole jo asennettu asenna se kirjoittamalla sudo apt-get install gcc Kubuntun konsoliin. Gnu autotoolsista on hyvä (englanninkielinen) tutoriaali osoitteessa http://www.lrde.epita.fr/~adl/autotools.html.

Käytännössä homma menee suurin piirtein näin:
1) Luot configure.ac-tiedoston, jonne määritellään projektin kääntämiseen liittyvät asiat kuten kääntäjä, projektin nimi ja versionumero sekä kirjastot, joita projekti tarvitsee kääntämisen yhteydessä.
2) Luot Makefile.am-tiedostot tarvittaviin hakemistoihin. Makefile.am-tiedostot sisältävät tietoja eri kansion sisällä olevien tiedostojen käyttäytymisestä käännösprosessin aikana. Siellä mm. määritellään käännettävän lähdekooditiedostot.
3) Ajat projektin juuressa komennon autoreconf --install, jonka jälkeen projekti valmistellaan kääntämistä varten.
4) Ajat make-komennon, jolloin projekti käännetään.

Gnu autotoolsin avulla voit myös määritellä omia kirjastoja käännettäväksi. Lueskele yllä mainitusta osoitteesta löytyvää tutoriaalia, niin homma varmaan avautuu hiukan paremmin.

lukutoukka - offline

Re: C++ -kysymykset

Post by lukutoukka - offline » Thu Dec 04, 2008 8:52 am

Kiitoksia tiedoista, auttoivat huomattavasti linux puolella ohjelmoinnissa.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Sat Dec 13, 2008 8:33 pm

Olen "aika" uusi C++: ssan kanssa joten:

Miksi tämä ei toimi?

Code: Select all

#include <iostream.h>

void main()
{
    cout << "Hello!";
}
(kannataako opetella C vai C++ ?)
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons » Sat Dec 13, 2008 8:35 pm

puuttu return 0; ja void main() tilalle int main(void).

yh:

Code: Select all


#include "iostream.h"

int main(void)
{

cout << "Heipa hei\n";
return 0;
}
Last edited by phons on Sat Dec 13, 2008 8:39 pm, edited 2 times in total.
Image

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Sat Dec 13, 2008 8:36 pm

phons wrote:puuttu return 0; ja void main() tilalle int main(void).
laitakko koodin :)
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: C++ -kysymykset

Post by Koodiapina » Sat Dec 13, 2008 8:37 pm

Miksi tämä ei toimi?
Suorita ohjelma komentoriviltä tai vaihtoehtoisesti kirjoita koodiksi:

Code: Select all

#include<iostream>
using namespace std;
int main(int argc,char* argv[]){
  cout<<"Hello, world!\n";
  cin.get();
}
(kannataako opetella C vai C++ ?)
C++ on ikäänkuin C johon on lisätty ominaisuuksia. Joten C++.

E: Evotin BB-tagien kanssa :P
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Sat Dec 13, 2008 8:43 pm

käynnistys komentoriviltä ei toimi

EDIT: yritän kääntää vanhaa C++ uuteen: miksi ei toimi?

Code: Select all

#include <iostream>

using namespace std;

int main(void)
{
    cout << "Nimesi? ";
    char nimi[20]
    cin >> nimi;
    cout << "n\Terve "<<nimi;
    return 0;
}
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Sat Dec 13, 2008 9:13 pm

Jani wrote:käynnistys komentoriviltä ei toimi

EDIT: yritän kääntää vanhaa C++ uuteen: miksi ei toimi?

Code: Select all

#include <iostream>

using namespace std;

int main(void) //Se void on ihan turha, argumentit mieluummin! en vain nyt juuri muista niitä muuttujia.
{
    cout << "Nimesi? ";
    char nimi[20];
    cin >> nimi;
    cout << "n\Terve "<<nimi;
    return 0;
}
Riviltä char nimi[20] puuttuu puolipiste! korjattu versio tuossa lainauksessa.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Sun Dec 14, 2008 5:54 pm

anteeksi taas ussi, mutta näin avun tarve näkyykin...

Eli kannataako Väri muutta näin: system("color NT")?
Jos jotenkin muuten, niin kertokaa miten.

N=Näytönväri
T=Tekstinväri
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons » Sun Dec 14, 2008 6:35 pm

Tollaisesta en ole itsekkään tiennyt. :shock: Missä kirjastossa se sisältyy?
Image

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Sun Dec 14, 2008 6:47 pm

phons wrote:Tollaisesta en ole itsekkään tiennyt. :shock: Missä kirjastossa se sisältyy?
No ei missään!

testaa vaikka näin:

Code: Select all

#include <iostream>

using namespace std;

int main()
{
    system("color 09");
    cout << "Terve!\n";
    system("pause");
    system("cls");
}
EDIT: Miten muutan C++ ohjelman muuksi kuin komentorivin näköiseksi?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great » Sun Dec 14, 2008 7:19 pm

Jani wrote:
phons wrote:Tollaisesta en ole itsekkään tiennyt. :shock: Missä kirjastossa se sisältyy?
No ei missään!

testaa vaikka näin:

Code: Select all

#include <iostream>

using namespace std;

int main()
{
    system("color 09");
    cout << "Terve!\n";
    system("pause");
    system("cls");
}
EDIT: Miten muutan C++ ohjelman muuksi kuin komentorivin näköiseksi?
Sinun tulee luoda windows ikkuna WIN API:a käyttäen. Jos haluat päästä helpolla niin lataa kirjasto, jossa nämä hommat ovat tehty valmiiksi sinun puolestasi, esim. SDL. Ja kannattaa myös harjoitella persuteet kunnolla ennekuin alkaa mitään grafiikka hommia tekemään.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Sun Dec 14, 2008 8:33 pm

En keksinyt parempaakaan paikkaa tälle jokaiselle tuttu: system("color NT"); komennon ohjeelle
(N=Näytönväri T=Tekstinväri)

Näin helppoa se on:

Code: Select all

#include <iostream>

using namespace std;

int main()
{
    system("title Color komennon ohje");
    system("color 0F");
    system("help color");
    system("pause");
}
C++ (kuten varmaan arvattiinkin)
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Sun Dec 14, 2008 9:47 pm

Jani wrote:En keksinyt parempaakaan paikkaa tälle jokaiselle tuttu: system("color NT"); komennon ohjeelle
(N=Näytönväri T=Tekstinväri)

Näin helppoa se on:

Code: Select all

#include <iostream>

using namespace std;

int main()
{
    system("title Color komennon ohje");
    system("color 0F");
    system("help color");
    system("pause");
}
C++ (kuten varmaan arvattiinkin)
MS-DOS only?

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Mon Dec 15, 2008 3:40 pm

esa94 wrote:MS-DOS only?
Häh????

Tuo oli tehty Dev-C++ ohjelmalla
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Mon Dec 15, 2008 4:09 pm

Jani wrote:
esa94 wrote:MS-DOS only?
Häh????

Tuo oli tehty Dev-C++ ohjelmalla
Ensinnäkin: Se on koodattu Dev-C++-IDE:llä, mutta käännetty todennäköisesti MinGW:llä.

Toisekseen, kaikki system()-funktion (Vai proseduurin? Emt.) kutsut kutsuvat Windowsin järjestelmän komentoriviä, joka nyt sattuu olemaan MS-DOS. Eli siis lähetät komentoriville komennon "color 0F". Tuo toimii tod. näk. siis vain windowsin tai dosin alla, muttei *NIX-järjestelmissä. Yleisesti ottaen system():ä ei kannata käyttää. Ainakaan jos aikoo tehdä toteutuksen muillekin alustoille.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: C++ -kysymykset

Post by Jani » Tue Dec 23, 2008 7:25 pm

miten suoritan C++ ohjelman komentoriviltä?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post by Dande » Tue Dec 23, 2008 8:07 pm

Jani wrote:miten suoritan C++ ohjelman komentoriviltä?
Samalla tavalla kuin minkä tahansa muunkin ohjelman: kirjoittamalla sen nimen (mahdollisesti polkuineen, ellet ole oikeassa kansiossa).
Voisitko esittää ongelmasi hieman tarkemmin?

Post Reply