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 »

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...
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda »

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 »

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 »

Kiitoksia tiedoista, auttoivat huomattavasti linux puolella ohjelmoinnissa.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons »

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 7:39 pm, edited 2 times in total.
Image
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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 »

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.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons »

Tollaisesta en ole itsekkään tiennyt. :shock: Missä kirjastossa se sisältyy?
Image
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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 »

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.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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 »

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?
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

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 »

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.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: C++ -kysymykset

Post by Jani »

miten suoritan C++ ohjelman komentoriviltä?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post by Dande »

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