Страница 1 из 1

Не срабатывает #define

Добавлено: 09 ноя 2010, 12:00
Lotles
Почему не срабатывает #define и как исправить ?

Код: Выделить всё

#include "stdafx.h"
#include "conio.h"
#include "Tennis.h"
#define LIM 20;
using namespace std;
int main(){
	TableTennisPlayer player1("Chuck","Blizzard",true);
	TableTennisPlayer player2("Tara", "Boomdea", false);
	player1.Name();
	if (player1.HasTable())
		cout << ": has a table.\n";
	else
		cout << ":hasn't a table.\n";
	player2.Name();
	if (player2.HasTable())
		cout << ": has a table";
	else
		cout << ":hasn't a table.\n";
	return 0;
}
Tennis.h

Код: Выделить всё

#include "stdafx.h"
#include "conio.h"
using namespace std;
class TableTennisPlayer{
private:
	char firstname[LIM];
	char lastname[LIM];
	bool hasTable;
public:
TableTennisPlayer(const char* fn, const char* ln, bool ht){
	strncpy(firstname, fn, LIM-1);
	firstname[LIM-1]='\0';
	strncpy(lastname, ln, LIM-1);
	lastname[LIM-1]='\0';
	hasTable=ht;
}
void Name() const{
	cout << lastname << ", " << firstname;
}
bool HasTable() const{
	return hasTable;
}
void ResetTable(bool v){
	hasTable=v;
}
};

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 12:06
BulldozerBSG
#define LIM 20; - зачем здесь точка с запятой?

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 12:08
Lotles
А ну да забыл но все равно не срабатывает

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 13:30
Albor
Ты определил LIM в срр файле, а используешь в h, как он может быть видимым?

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 13:46
Lotles
Я представлял так: препроцессор грузит файл Tennis.h и главный код а потом все LIM заменяет на 20

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 14:20
Lotles
как тогда работает препроцессор

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 14:38
BulldozerBSG

Код: Выделить всё

#define LIM 20
#include "Tennis.h"
Можно поменять местами и заработает (но это плохой тон программирования)

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 15:03
Albor
Lotles писал(а):Я представлял так: препроцессор грузит файл Tennis.h и главный код а потом все LIM заменяет на 20
Поставь эту строчку в Tennis.h, тогда всё будет понятно, логично и LIM будет виден везде где подключается Tennis.h.

Re: Не срабатывает #define

Добавлено: 09 ноя 2010, 15:06
Lotles
Пасиб, разобрался