Waarom is mijn HelloWorld-functie niet in dit bereik gedeclareerd?

Ik krijg de volgende compilatiefout met g++:

l1.cpp: In function 'int main()':
l1.cpp:5:15: error: 'HelloWorld' was not declared in this scope

Antwoord 1, autoriteit 100%

U moet de functie declareren of definiëren voordat u deze kunt gebruiken. Anders weet het niet dat HelloWorld()bestaat als een functie.

Voeg dit toe voor je hoofdfunctie:

void HelloWorld();

U kunt ook de definitie van HelloWorld()vóór uw main()plaatsen:

#include <iostream>
using namespace std;
void HelloWorld()
{
  cout << "Hello, World" << endl;
}
int main()
{
  HelloWorld();
  return 0;
}

Antwoord 2, autoriteit 22%

U moet de functie declareren voordat u deze kunt gebruiken:

#include <iostream>
using namespace std;
void HelloWorld();
int main()
{
    HelloWorld();
    return 0;
}
void HelloWorld()
{
    cout << "Hello, World" << endl;
}

of u kunt de definitie van HelloWorld()vóór main()

verplaatsen


Antwoord 3, autoriteit 18%

Je moet declaratie HelloWorld()doorsturen zodat mainweet wat het is. Vind ik leuk:

#include <iostream>
using namespace std;
void HelloWorld();
int main()
{
  HelloWorld();
  return 0;
}
void HelloWorld()
{
  cout << "Hello, World" << endl;
}

Antwoord 4, autoriteit 11%

Je moet een prototype van de functie hebben vóór de aanroep of de hele functie ervoor.

Dus de eerste is:

void HelloWorld();
int main() {
  HelloWorld();
  return 0;
}
void HelloWorld() {
  cout << "Hello, World" << endl;
}

En de tweede manier is:

void HelloWorld() {
  cout << "Hello, World" << endl;
}
int main() {
  HelloWorld();
  return 0;
}

Antwoord 5, autoriteit 11%

Er is nog een mogelijkheid om de een of andere reden die niemand heeft genoemd, namelijk het gebruik van externe declaratie:

#include <iostream>
using namespace std;
int main()
{
  extern void HelloWorld();
  HelloWorld();
  return 0;
}
void HelloWorld()
{
  cout << "Hello, World" << endl;
}

Het heeft de voorkeur wanneer u de naam van de functie niet wilt introduceren in het bereik van de naamruimte.


Antwoord 6, autoriteit 5%

Al deze antwoorden zijn correct, maar vreemd genoeg zou dit hebben gewerkt:

struct Hello {
  static int main() { World(); return 0; } /* note: World() not declared yet */
  static void World() { std::cout<<"Hello World"; }
};
int main() { return Hello::main(); } 

Antwoord 7, autoriteit 4%

Je moet de functie voor de hoofdfunctie plaatsen.


Antwoord 8, autoriteit 3%

in C++ moet u de functies definiëren of op zijn minst declareren voordat u ze aanroept.

Wat je tot nu toe probeert te doen is ongeveer als volgt:

int main()
{
   cout << b;
   int b = 10;
}

Dus je kunt het ook zo proberen:

#include <iostream>
using namespace std;  
void HelloWorld();
int main()  
{
    HelloWorld();
    return 0;  
}
void HelloWorld()
{
  cout << "Hello, World" << endl;  
} 

Het is een goede gewoonte in C++ om alle andere functies vóór de hoofdfunctie te definiëren.


Antwoord 9, autoriteit 2%

Herschik HelloWorld()zodat het voor main()verschijnt:

#include <iostream>
using namespace std;
void HelloWorld()
{
    cout << "Hello, World" << endl;
}
int main()
{
    HelloWorld();
    return 0;
}

Antwoord 10

Als je definieert dat je onder je hoofdfunctie functioneert, moet je dit eerst hierboven aangeven.

#include<iostream>
using namespace std;
void HelloWorld();
int main()  
{
    HelloWorld();
    return 0;  
}
void HelloWorld()
{
  cout << "Hello, World" << endl;  
} 

Other episodes