[ Brolly @ 09.02.2011. 14:27 ] @
Kako je ovo moguce? Jedan isti, IDENTICAN kod da radi, a u drugom slucaju ne radi?

Sad radi.

Sad ne radi.

Ovo mi se u zivotu nije desilo.




Malo detaljnije:

Prekopirao sam jedan primer koda u Code:Blocks (copy/paste) i radilo je. Otkucao sam svoj kod onako iz glave, i nije radio. I ja nista, krenem da trazim gresku, markiram kao komentare deo po deo, brisem, uproscavam oba programa sve vise i na kraju dodjoh do ovoga sto vidite - ISTI KOD, jedan radi, drugi ne radi! Ako otvorim novi fajl i copy/paste-ujem program sto RADI, taj ce kompajlirati. A ako onaj sto ne radi copy/pastujem, novi kod u novom fajlu NECE radi.

Nemam blage veze sta da radim....
[ Igor Gajic @ 09.02.2011. 14:32 ] @
Pogledaj taj kod koji ne radi u Notepad++ editoru, i ukljuci da vidis nevidljive karaktere, CR LF i sl. najvaznije od svega, da li ima byte order bajtove na pocetku fajla. Moguce je da te to zeza. A onda uradi compare ta 2 fajla preko npr. Total commandera.
[ Mihajlo Cvetanović @ 09.02.2011. 14:39 ] @
Razlika je između CDAccountV1 i CDAccountVl. U jednom slučaju imaš broj 1, a u drugom malo slovo L.
[ Brolly @ 09.02.2011. 14:51 ] @
jeste....
I ja neki programer.... strasno.....

Hvala na odgovorima, bolje da se nisam javljao...
[ Lord Of The Nations @ 20.04.2011. 15:20 ] @
Ako sam dobro svatio ti pokusavas da koristis pointere.
Ovako bi tvoj kod izgledao kod mene:

Code:

#include <iostream>

using namespace std;

struct CDAccountV1
{
   double balance;
   double interestRate;
   int term;
};
void getData(CDAccountV1*theAccount);
int main()
{
   CDAccountV1 account;
   getData(&account);

    return 0;
}
void getData(CDAccountV1*theAccount)
{  cout << "\nEnter account balance: ";
   cin >>theAccount->balance;
   cout << "\nEnter account interest rate: ";
   cin >>theAccount->interestRate;
   cout << "\nEnter the number of months until maturity: ";
   cin >> theAccount->term;
}


I da zasto toliko svi preferirate iostream.
mislim sa njim je program u startu min 800 kb
umesto cin i cout moze da se upotrebi sledece

Code:

#include <stdlib.h>
#include <stdio.h>

int main()
{
char values[10];
int IntData = 0;
fgets(values,sizeof(values),stdin);
intData = atoi(values);
memset(values,0,10);
if(intData == 0 )
printf("error\n");
else
printf("intData = %i\n",intData);
return 0
}


Ovaj Program U Code::Blocks Kod Mene Je 3 KB
[ Mihajlo Cvetanović @ 20.04.2011. 16:06 ] @
Iako je na početno pitanje već odgovoreno ajde da odgovorimo i na novo. Prednost cout-a u odnosu na printf se vidi kad imaš bitno veći projekat. Govorimo o hiljadama .cpp fajlova i milionima linija koda. U slučaju printf-a ako želiš da promeniš tip promenljive (long long ili double umesto int) onda obavezno moraš da promeniš i tip unutar format stringa svuda gde se ta promenljiva koristi. Ako slučajno negde ne promeniš format program će pogrešno raditi, a kompajler neće ni primetiti problem. U slučaju cout-a sve lepo radi od starta, jer nema šta da se sinhronizuje. Kompajler će automatski pozvati operator << sa drugim tipom parametra. Čak i ako ništa ne menjaš, i dalje moraš da paziš svaki put kad pišeš printf da bi uskladio parametar u formatu sa parametrom funkcije. To je problem, jer neizostavno ćeš jednom negde pogrešiti, a greška će se videti tek kod korisnika (što je jako, jako loše).

Cout, s druge strane, ima nedostatak da je manje pogodan za internacionalizaciju (omogućavanje programa da sve ispisuje na nekom drugom jeziku). Rečenica je rascepkana na delove, što predstavlja problem prevodiocu koji te delove treba da prevede. Kod printf-a rečenica nije rascepkana, ali takođe nije zgodna za internacionalizaciju, jer ako imaš više od jednog parametara onda može da se desi da na drugom jeziku rečenica najprirodnije glasi ako se parametrima zamene mesta (što nije podržano ni u printf-u, ni u cout-u). Zato je u boost-u recimo uvedena Format biblioteka, http://www.boost.org/doc/libs/1_46_1/libs/format/doc/format.html koja je rešenje bolje od oba prethodna.
[ milanche @ 20.04.2011. 16:47 ] @
Citat:
Mihajlo Cvetanović: ... a kompajler neće ni primetiti problem.


Zavisi od kompajlera i narocito od compile flag-ova setovanih u Makefile-u.

Cesto se desava druga krajnjost - da je kompajler do te mere zlocudan da ti ne prihvata %d za long promenljivu nego trazi %ld,
i/ili %lld za 64-bitne promenljive, sto moze da bude bas iritantno kad imas 5-6 argumenata za printf, pa kopas da vidis na koji se
zapravo zali...potrosis vise vremena na glancanje debug print-ova nego na sam kod kojim se bavis.