Мои исходные файлы выглядят следующим образом
//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;
}
Я собрал их с
g ++ -o main main.cpp functions.cpp
Это дало мне сообщение об ошибке «isPrime» не было объявлено в этой области.
Твоя проблема настолько проста, что я ее сначала не видел. Вместо #ifdef FUNCTIONS
тебе нужно #ifndef FUNCTIONS
, Обратите внимание n
,
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
Попробуй это
В зависимости от того, какой компилятор вы используете, вы также можете использовать следующую директиву:
#pragma once
Что это делает, это сказать компилятору: «Эй, #include
Я только один раз «, как и в случае с заголовками. Однако, это может быть более эффективным для предотвращения ошибок компоновщика переопределения.