2016-03-21 2 views
-2

Действительно, этот вопрос задают и отвечают много раз, но я не мог правильно настроить функцию из основной программы. У меня есть три отдельных файла, как показано ниже.Вызов функции из основной функции в cpp

//max.h 
int max(int num1, int num2); 


//maxmain.cpp 
#include <iostream> 
#include "max.h" 
using namespace std; 

// function declaration 
int max(int num1, int num2); 

int main() 
{ 
    // local variable declaration: 
    int a = 100; 
    int b = 200; 
    int ret; 

    // calling a function to get max value. 
    ret = max(a, b); 

    cout << "Max value is : " << ret << endl; 

    return 0; 
} 


//max.cpp 
#include "max.h" 
// function returning the max between two numbers 
int max(int num1, int num2) 
{ 
    // local variable declaration 
    int result; 

    if (num1 > num2) 
     result = num1; 
    else 
     result = num2; 

    return result; 
} 

Когда я скомпилировать maxmain.cpp, я получаю ошибку: maxmain.cpp:(.text+0x21): undefined reference to max(int, int) collect2: error: ld returned 1 exit status

+1

Ваш код в порядке, это должна быть проблема с тем, как вы компилируете. Что вы используете для компиляции (visual studio, gcc и т. Д.)? – CoryKramer

+0

@CoryKramer Я на Linux. 'g ++ maxmain.cpp -o maxmain' –

+0

вам нужно указать имена всех .cpp-файлов при компиляции или связывать объекты после компиляции отдельно. –

ответ

2

Ваш код хорошо, как написано. Проблема заключается в том, как вы компилируете. Вы должны перечислить все файлы cpp в этом случае

g++ maxmain.cpp max.cpp -o maxmain 
+0

Oh .. My bad !!. Спасибо за Ваш ответ. –

Смежные вопросы