возможность повторного использования — «Функция не была объявлена» во время компиляции нескольких файлов в Stack Overflow

Мои исходные файлы выглядят следующим образом

//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» не было объявлено в этой области.

0

Решение

Твоя проблема настолько проста, что я ее сначала не видел. Вместо #ifdef FUNCTIONS тебе нужно #ifndef FUNCTIONS, Обратите внимание n,

5

Другие решения

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

Попробуй это

1

В зависимости от того, какой компилятор вы используете, вы также можете использовать следующую директиву:

#pragma once

Что это делает, это сказать компилятору: «Эй, #include Я только один раз «, как и в случае с заголовками. Однако, это может быть более эффективным для предотвращения ошибок компоновщика переопределения.

0
По вопросам рекламы [email protected]