Your problem is so simple I didn't see it at first. Instead of #ifdef FUNCTIONS
you need #ifndef FUNCTIONS
. Note the n
.
"Function was not declared" during multiple file compilation in C++
-
06-07-2023 - |
Pregunta
My source files look like the following
//functions.h
#ifdef FUNCTIONS
#define FUNCTIONS
bool isPrime(int num);
#endif
//function.cpp
include "functions.h"
bool isPrime(int num) {...}
//main.cpp
#include "functions.h"
#include <iostream>
int main()
{
std::cout << isPrime(2);
return 0;
}
I compiled them with g++ -o main main.cpp functions.cpp
It gave me the error message "isPrime" was not declared in this scope.
Solución
Otros consejos
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
Try this
Depending on what compiler you use, you could also use the following directive:
#pragma once
What this does is tell the compiler, "Hey, #include
me only once", just like with the header guards. It may, however, be more effective in preventing redefinition linker errors.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow