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.

有帮助吗?

解决方案

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top