#include
Добавляя NumGen.cc
в файл main.cc
, вы заставляете препроцессор создавать два файла, подобные следующим:
NumGen.cc
:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int numGen()
{
int rNum;
srand(time(NULL)); //--Seeds a random number.
rNum = 1 + (rand() % 100);
return rNum;
}
и main.cc
:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int numGen()
{
int rNum;
srand(time(NULL)); //--Seeds a random number.
rNum = 1 + (rand() % 100);
return rNum;
}
int main()
{
std::cout << numGen();
return 0;
}
потому что директива препроцессора #include
просто вставляет содержимое файла, который вы включаете, туда, куда вы его включаете (если, конечно, он не был включен ранее и не заключен в защиту включения. Я также предполагаю, что вы компилируете как NumGen.cc
, так и main.cc
на одну и ту же командную строку, поэтому, естественно, вы получите ошибку множественного определения символа, учитывая, что функция numGen
теперь определена и реализована в обоих файлах.
Что вам нужно сделать, так это объявить numGen
в заголовочном файле, назовем его NumGen.h
:
int numGen();
а затем поместите строку #include "NumGen.h"
как в NumGen.cc
, так и в main.cc
.
04.12.2012