在C ++中进行多文件编译时,“未声明函数”

时间:2014-04-19 02:56:53

标签: c++ reusability

我的源文件如下所示

//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”未在此范围内声明。

3 个答案:

答案 0 :(得分:5)

你的问题很简单我起初并没有看到它。而不是#ifdef FUNCTIONS您需要#ifndef FUNCTIONS。请注意n

答案 1 :(得分:1)

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

试试这个

答案 2 :(得分:0)

根据您使用的编译器,您还可以使用以下指令:

#pragma once

这样做是告诉编译器,“嘿,#include我只有一次”,就像标题警卫一样。但是,它可能更有效地防止重新定义链接器错误。