Question

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.

Was it helpful?

Solution

Your problem is so simple I didn't see it at first. Instead of #ifdef FUNCTIONS you need #ifndef FUNCTIONS. Note the n.

OTHER TIPS

#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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top