Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Svarer bare med koden, regner med at det er nok:

 

/* Demonstrates the variables and constants. */
#include <stdio.h>

using namespace std;

/* Define the constant to convert from pounds to grams. */
#define GRAMS_PER_POUND 454


/* Declare the needed variables. */
float weight_in_pounds, weight_in_grams;


int main(void)
{
/* Input data from user */
printf("Enter your weight in pounds: ");
scanf("%f", &weight_in_pounds);


/* Preform conversions */
weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;


/* Display results on the screen */
printf("\nYour weight in kilograms is %f.\n", weight_in_grams / 1000);

return 0;
}

 

Nå er det C++ som er "greia mi" egentlig; der er i hvertfall "main()" gammelt, mens "int main(int argc, char** argv)" er gyldig.

 

Edit:

Kunne kanskje noen prøve å forklare de uthevne delene ved "int main(void)"?

 

De er vanlige deler i en hver funksjonsdeklarasjon; "return_type funksjonsnavn(parametertype1, parametertype2, ...)"

 

Hvis du ikke har hatt om funksjoner ennå kommer du til det etterhvert. (main er en funksjon, akkurat som de funksjoner du kan lage selv).

Endret av søppel
Lenke til kommentar
  • 3 uker senere...
Videoannonse
Annonse

int main(void): main returneret et heltall, og tar ingen argumenter.

 

(int) main(): (main() blir automatisk satt til å returnere et heltall.) main() tar et ubegrenset, ukjent antall argumenter.

 

De fleste kompilere gjør vel dog automatisk at funksjon() ikke tar noen argumenter? mener også at dette egenlig er implentert i dagens standard C.

Lenke til kommentar

hva surrer du med nå?

int main(void)

int main()

er det samme. begge returnerer en int og ingen av dem tar noen argumenter.

 

(int) main() er en syntax error.

 

hvis du vil at en funksjon skal ta et ukjent antall argumenter bruker du ellipsis ...

int f(int bla, ...);

Endret av saboi
Lenke til kommentar

Dette er C.

den aldeles korrekte måten å si "int main()" på i C er int main(void). (int) har jeg skrevet fordi de fleste kompilere vel sier at "hei, han spesifiserte main() uten noen type, han vil sikkert ha main() til å returnere et heltall." Iallefall var det slik tidligere at hvis man brukte int funksjon(){ /* --- */ } og brukte funksjonen slik: funksjon(a) klaget ikke kompileren, men man fikk skumple segfaults ved kjøring. hvis man derimot spesifiserte int funksjon(void) ville kompileren klage på at funksjon() ikke tar noen argumenter.

Lenke til kommentar
  • 4 uker senere...

Heisann!

Jeg sitter og prøver å lage et lite program her som skal kunne kjøre linux og windows kommandoer på min maskin. Dette går ganske greit men jeg får noen error. Jeg klarer ikke å konvertere fra std::string til const char*. Jeg har prøvd:

static_cast<const char*>;(s)

(hvor s er av typen std::string), men uten hell. Jeg har også prøvd den C-ish.

Jeg bruker Windows XP Home og bruker MinGW kompilatoren.

Jeg kompilerer og linker slik:

g++ MyStarter.cpp MyStarterDef.cpp -o MyStarter.exe 

 

Paster hele koden for sikkerhetskjyld:

MyStarter.cpp

MyStarterDef.cpp

MyStarterDef.hpp.

 

g++ MyStarter.cpp MyStarterDef.cpp -o MyStarter.exe
MyStarterDef.cpp: In function `void read(std::istream&)':
MyStarterDef.cpp:32: error: invalid initialization of non-const reference of type 'std::string&' from a temporary of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'
MyStarterDef.hpp:8: error: in passing argument 1 of `void execute(std::string&)'
MyStarterDef.cpp:37: error: cannot convert `s' from type `std::string' to type `const char*'
MyStarterDef.cpp:38: error: cannot convert `s2' from type `std::string' to type `const char*'
MyStarterDef.cpp:46:23: warning: unknown escape sequence '\m'
MyStarterDef.cpp:46:23: warning: unknown escape sequence '\m'
MyStarterDef.cpp: In function `void execute(std::string&)':
MyStarterDef.cpp:46: error: invalid static_cast from type `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to type `const char*'

Edit: Skrve sleip.

Edit: Glemte feilmelding :thumbdown:

Endret av zirener
Lenke til kommentar
  • 2 uker senere...

Heisan!

Jeg har sittet her og laget et lite program. En "forenkling" av net send/msg kommandoen. Selve poenget er egentlig bare å sende meldinger via LAN, så det er ingen stor oppgave. Men, jeg får visse problemer.

Sitter på en Windows XP og bruker mingw kompilatoren.

(Har overlastet en del operatorer bare for at jeg skal ha muligheten til å gjøre litt mer enn det jeg egentlig trenger i programmet)

LØST!

Kildekode:

NetSend.cpp

NetSendDef.cpp

NetSendDef.hpp

 

Kompilasjon og error:

$ g++ NetSend3.cpp NetSendDef3.cpp -o NetSend3.exe
NetSend3.cpp: In function `int main()':
NetSend3.cpp:11: error: aggregate `MsgString send' has incomplete type and cannot be defined

PS: Nedslakting av koden mottas med takk :p .

Endret av zirener
Lenke til kommentar
  • 4 uker senere...

Skriver inn følgende kodesnutt i Dev-C++ (4.9.8.0):

 

#include <iostream>
using namespace std;
int main()
{
   int tall1;
   int tall2;
   int sum;
   
   cout << "Skriv to heltall med mellomrom mellom: ";
   cin >> tall1 >> tall2;
   sum = tall1 + tall2;
   cout << "summen blir: " << sum << endl;
   return 0;
}   

 

Men programmet bare lukker seg når jeg skriver to tall... Hva er galt?

Lenke til kommentar

#include <iostream>
using namespace std;
int main()
{
  int tall1;
  int tall2;
  int sum;
  
  cout << "Skriv to heltall med mellomrom mellom: ";
  cin >> tall1 >> tall2;
  sum = tall1 + tall2;
  cout << "summen blir: " << sum << endl;
  cin.ignore();
  cin.get();                  //Du kan include <cstdlib> og bruke system("pause");
  return 0;                   //istden for 'cin.ignore();', og 'cin.get();'.
}

Dette skal vel funke...

Edit: La til det med system...

Endret av zirener
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...