Forum » Programiranje » C++ Project --- v1
C++ Project --- v1
Vesoljc ::
no, recimo, da se lotim eniga projekta v c++ jeziku. za orientacijo lahko povem, da bo zadeva objektno orientirana knjiznjica (sdk), ki bo omogocala lazji ter hitrejsi razvoj realnocasovnih aplikacij. bo pa portabilna ter v neki fazi tudi odprtoscenska .
nek osnovni nacrt, dizajn tega ogrodja (framework) ze imam v glavi, vendar pa je od dizajna do implementacije precej dolga pot. zatorej bi rad vasa mnenja ter nasvete kako se omenjenje zadevscine lotiti.
kje zaceti je prvo vprasanje. imho je potrebno postaviti nekaksne temelje knjiznjice. recimo standardizacija stila kodiranja. tu lahko upostevamo vse od oblike datotek, ki vsebujejo izvorno kodo, dokumentacije, ki iz nje nastane ter seveda "stil" kodiranja. no, za generiranje izvornih datotek sem si naredil tole(win32) orodje. upam, da vam bo vsecen . ok, to torej imamo. naslednji korak je dokumentacija. tu sem se odlocil za DoxyGen. stil kodiranja pa je povsem moja stvar! povem le, da bom uporabljal cudno mesanico madzarske ter svoje notacije. no nekaj je vidno ze iz generatorja :)
se to, celoten projekt bo v angleskem jeziku.
drugi vecji korak je gradnja osnove (base). prva datoteka mora imho vsebovati osnovne informacije o projektu (imena, pravice, verzija, itd...). to lahko poimenujemo osnovne definicije? ce hocemo zagotoviti portabilnost, je naslednja stvar, ki jo moramo zagotoviti, podpora razlicnim prevajalnikom (osnovni tipi) ter razlicnim platformam. temu sledijo razlicne nastavitve ter debug opcije knjiznjice. na koncu bi dodal le se neke standardne konstante (ali const ali define).
baza bi torej izgledala nekako takole:
- Base.hpp (glavni header)
-- Constants.hpp
-- SDKDebug.hpp
-- SDKConfig.hpp
-- Types.hpp
-- Compiler.hpp
---- CompilerMSVC.hpp
---- CompilerGNUC.hpp
---- CompilerMWERKS.hpp
-- Platform.hpp
---- PlatformWin32.hpp
---- PlatformLinux.hpp
---- PlatformMac.hpp
-- BaseDefines.hpp
da zagotovimo popolno portabilnost moramo upostevati tudi byte order (MSB vs LSB). tu pa ne vem, ali potrebujemo to funkcionalnost na tako nizski stopnji, ali pustimo ta problem razlicnim bralcem ter pisalcem?
mnenja, kritike ter financna pomoc so seveda dobrodosli
nek osnovni nacrt, dizajn tega ogrodja (framework) ze imam v glavi, vendar pa je od dizajna do implementacije precej dolga pot. zatorej bi rad vasa mnenja ter nasvete kako se omenjenje zadevscine lotiti.
kje zaceti je prvo vprasanje. imho je potrebno postaviti nekaksne temelje knjiznjice. recimo standardizacija stila kodiranja. tu lahko upostevamo vse od oblike datotek, ki vsebujejo izvorno kodo, dokumentacije, ki iz nje nastane ter seveda "stil" kodiranja. no, za generiranje izvornih datotek sem si naredil tole(win32) orodje. upam, da vam bo vsecen . ok, to torej imamo. naslednji korak je dokumentacija. tu sem se odlocil za DoxyGen. stil kodiranja pa je povsem moja stvar! povem le, da bom uporabljal cudno mesanico madzarske ter svoje notacije. no nekaj je vidno ze iz generatorja :)
se to, celoten projekt bo v angleskem jeziku.
drugi vecji korak je gradnja osnove (base). prva datoteka mora imho vsebovati osnovne informacije o projektu (imena, pravice, verzija, itd...). to lahko poimenujemo osnovne definicije? ce hocemo zagotoviti portabilnost, je naslednja stvar, ki jo moramo zagotoviti, podpora razlicnim prevajalnikom (osnovni tipi) ter razlicnim platformam. temu sledijo razlicne nastavitve ter debug opcije knjiznjice. na koncu bi dodal le se neke standardne konstante (ali const ali define).
baza bi torej izgledala nekako takole:
- Base.hpp (glavni header)
-- Constants.hpp
-- SDKDebug.hpp
-- SDKConfig.hpp
-- Types.hpp
-- Compiler.hpp
---- CompilerMSVC.hpp
---- CompilerGNUC.hpp
---- CompilerMWERKS.hpp
-- Platform.hpp
---- PlatformWin32.hpp
---- PlatformLinux.hpp
---- PlatformMac.hpp
-- BaseDefines.hpp
da zagotovimo popolno portabilnost moramo upostevati tudi byte order (MSB vs LSB). tu pa ne vem, ali potrebujemo to funkcionalnost na tako nizski stopnji, ali pustimo ta problem razlicnim bralcem ter pisalcem?
mnenja, kritike ter financna pomoc so seveda dobrodosli
Abnormal behavior of abnormal brain makes me normal...
- spremenil: Vesoljc ()
noraguta ::
v vsako datoteko za kodo dodaj vsaj link na licenco in avtorstvo.
mislim da se ti ni treba obremenjevat z define za platforme na katere ne boš delal porta. to lahko skoordiniraš kasneje. malo se varuj kakšnih reinterpret_castov.(zanjič mi je ravno pri portanju eden zrl zivce >:~ )
fino je tudi da se odločiš s čim boš generiral make,nmake,dsw-je, etc... Meni za moja sranja bolj ali manj zadošča premake. ki pa zna biti za tvoje potrebe malo preskromen.Malo pobkljaj okoli tega.
mislim da se ti ni treba obremenjevat z define za platforme na katere ne boš delal porta. to lahko skoordiniraš kasneje. malo se varuj kakšnih reinterpret_castov.(zanjič mi je ravno pri portanju eden zrl zivce >:~ )
fino je tudi da se odločiš s čim boš generiral make,nmake,dsw-je, etc... Meni za moja sranja bolj ali manj zadošča premake. ki pa zna biti za tvoje potrebe malo preskromen.Malo pobkljaj okoli tega.
Pust' ot pobyedy k pobyedye vyedyot!
Vesoljc ::
vsaka datoteka bo itaq imela svojo glavo (a nisi pogledu generatorja ).
kar se pa portabilnosti tice, je pa itaq tko, da je bolje bit pripravljen, ne? win ter linux bo ziher, ce se bo pa komjuniti zmigu pa tud kej vec
reinterpret_cast? ce bo slo vse po nacrtih, ga ne bi smel rabiti
o mejkanju bom pa uposteval nasvet!
kar se pa portabilnosti tice, je pa itaq tko, da je bolje bit pripravljen, ne? win ter linux bo ziher, ce se bo pa komjuniti zmigu pa tud kej vec
reinterpret_cast? ce bo slo vse po nacrtih, ga ne bi smel rabiti
o mejkanju bom pa uposteval nasvet!
Abnormal behavior of abnormal brain makes me normal...
trs ::
Izogibaj se templateom, RTTIju in podobnim packarijam in bo vse v redu ;) Za linux pa pride prav ce uporabis -Wall -W -ansi -pendantic flage ;) Sicer pa je na splosno dobro da uporabljas cim bolj pedantne flage za C/C++ compilerje. Za kasne sistemske stvari mogoce bi ti prisel prav APR(apache portable runtime) ... Ne pazit samo na MSB/LSB ampak tudi na 64-bit platforme, torej nic int -> pointer mumbo jumbo in pazi da se long uporablja z longi in int z inti ;)
Se ena stvar na katero mogoce lahko pazis(razen ce bo projekt izkljucno v anglescini) je UNICODE. UTF-8 je nekako dobra izbira za Unix, windows pa so cisto druga pesmica ...
lp,
trs
Se ena stvar na katero mogoce lahko pazis(razen ce bo projekt izkljucno v anglescini) je UNICODE. UTF-8 je nekako dobra izbira za Unix, windows pa so cisto druga pesmica ...
lp,
trs
Vesoljc ::
caki caki, zakaj bi se izogibal template-om ter rtti-ju? soliden prevajalnik jih mora prebavit!
pedantnost ter perfekcionizem are my middle name
za 64 bitov bo itaq poskrbljeno, pa tudi pointer mumbo jumbo otpade. o unicode-u pa tudi resno razmisljam...
se ena stvar, imamo recimo tole:
kako se izognit tistim warningom ter pretvarjanju (f in podobno)? ker dvojnih funkcij se mi res ne da pisati...
pedantnost ter perfekcionizem are my middle name
za 64 bitov bo itaq poskrbljeno, pa tudi pointer mumbo jumbo otpade. o unicode-u pa tudi resno razmisljam...
se ena stvar, imamo recimo tole:
#define REAL_PRECISION 64 #if REAL_PRECISION >= 64 typedef double my_real #else typedef float my_real
kako se izognit tistim warningom ter pretvarjanju (f in podobno)? ker dvojnih funkcij se mi res ne da pisati...
Abnormal behavior of abnormal brain makes me normal...
trs ::
Kar se tice templateov in rttija je res, da jih soliden compiler mora prebavit, vendar zal niso vsi solidni ;) Poleg tega pa templatei generirajo abnormalno dosti simbolov, kar zna bit problem pri start-up casu aplikacije. Pri RTTIju pa je problem v tem, da ce prevedes kaksen kos z RTTIjem(recimo kaksen library) potem moras vse prevajat z RTTI opcijami (vsaj vcasih je blo tako za KDE - ce si prevedel QT z RTTI, potem si moral cel KDE prevajat s tem).
V glavnem, jaz jih raje ne uporabljam... se da prav lepo zivet tudi brez teh dveh featurejev.
Sicer pa presoja je tvoja ;)
lp,
trs
V glavnem, jaz jih raje ne uporabljam... se da prav lepo zivet tudi brez teh dveh featurejev.
Sicer pa presoja je tvoja ;)
lp,
trs
Vesoljc ::
ok, naslednja stvar - struktura direktorijev!
- bin
- lib
- include
- source
- doc
tko?
- bin
- lib
- include
- source
- doc
tko?
Abnormal behavior of abnormal brain makes me normal...
napsy ::
mogoce se kak arch imenik
"If you die, you die. But when you live you live. There is no time to waste."
napsy ::
Sicer je pa že nekaj podobnega na http://www.boost.org/.
"If you die, you die. But when you live you live. There is no time to waste."
Zgodovina sprememb…
- spremenil: napsy ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | OpenBSD praznuje 20 letOddelek: Novice / Operacijski sistemi | 9418 (6645) | opeter |
⊘ | ERROR IN COMMAD LINE -BIN CUEOddelek: Pomoč in nasveti | 824 (768) | Skrat |
» | c++ header fileOddelek: Programiranje | 843 (802) | Vesoljc |
» | Recenzija novega Siddhartine albuma Rh- (strani: 1 2 )Oddelek: Sedem umetnosti | 7506 (6115) | Tic |
» | problem v c++ kako prebrati matriko?Oddelek: Programiranje | 1387 (1204) | robinzon |