Gå till innehåll
Just nu i M3-nätverket

C++ Funktions anrop


AndersHz

Rekommendera Poster

Är det någon som kan förklara varför denna programsnutt inte funkar?

//gkompilator ger felmeddelande: error C3861: 'test': identifier not found

 

#include<iostream>

using namespace std;

 

void test(char[])

{

cout << t << endl;

}

void main()

{

char z[20] = "text";

cout << z << endl;

test(z);

cin.get();

cin.get();

}

Länk till kommentar
Dela på andra webbplatser

Testa att före raden

void test(char[])

lägga in funktionsdeklarationen

void test(char[]);

 

OBS semikolonet i slutet.

Länk till kommentar
Dela på andra webbplatser

Är det någon som kan förklara varför denna programsnutt inte funkar?

//gkompilator ger felmeddelande: error C3861: 'test': identifier not found

 

#include<iostream>

using namespace std;

 

void test(char[])

{

cout << t << endl;

}

void main()

{

char z[20] = "text";

cout << z << endl;

test(z);

cin.get();

cin.get();

}

Så här måste du skriva:

 

#include<iostream>

using namespace std;

 

void test(const char* t) //måste namnge att det är t du vill använda samt bytte från char[] till const char*

{

cout << t << endl;

}

 

int main(void)

{

char z[20] = "text";

cout << z << endl;

test(z)

cin.get();

cin.get();

return 0;

}

Länk till kommentar
Dela på andra webbplatser

Så här måste du skriva:

 

#include<iostream>

using namespace std;

 

void test(const char* t) //måste namnge att det är t du vill använda samt bytte från char[] till const char*

{

cout << t << endl;

}

 

int main(void)

{

char z[20] = "text";

cout << z << endl;

test(z)

cin.get();

cin.get();

return 0;

}

 

 

Ska testa men, return 0 ihop med void? Det är inte tänkt att något värde ska returneras.

Länk till kommentar
Dela på andra webbplatser

Är det någon som kan förklara varför denna programsnutt inte funkar?

//gkompilator ger felmeddelande: error C3861: 'test': identifier not found

 

#include<iostream>

using namespace std;

 

void test(char t[])

{

cout << t << endl;

}

void main()

{

char z[20] = "text";

cout << z << endl;

test(z);

cin.get();

cin.get();

}

 

upptäckte att jag missade ett 't' före [] i funktionshuvudet (kompletterat), sorry. Vilken skillnad gör det?

Länk till kommentar
Dela på andra webbplatser

Ska testa men, return 0 ihop med void? Det är inte tänkt att något värde ska returneras.

 

main() måste returnera en int, 0 om programmet avslutades utan fel och om programmet avslutades pga något som gick fel avslutas det med värde större än 0. Kolla i böcker eller standarden angående detta.

 

alltså du måste skriva int main(void) om programet inte skall ta några argument. alternativt bara

int main().

 

om programmet skall ta argument så skall main() se ut som följer:

int main(int argc, char* argv[])

 

Mvh

Lars

Länk till kommentar
Dela på andra webbplatser

upptäckte att jag missade ett 't' före [] i funktionshuvudet (kompletterat), sorry. Vilken skillnad gör det?

Ja om du inte namnger din variabel med ett namn tex 't' så kan du ju inte gärna skriva:

cout << t << endl;

 

Hoppas du förstod vad jag menar med detta. Det gör alltså väldigt stor skillnad.

 

För att se mer i detalj vad som gå fel eller varningar vid kompilering använd gcc med flaggan -wall

se man gcc för beskrivningar av vilka flaggor du kan använda.

Länk till kommentar
Dela på andra webbplatser

Tack alla för tipsen!

Det har hjälpt mej att lösa problemet.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...