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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

Почему не срабатывает #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;
}
};
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

#define LIM 20; - зачем здесь точка с запятой?
Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

А ну да забыл но все равно не срабатывает
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Ты определил LIM в срр файле, а используешь в h, как он может быть видимым?
Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

Я представлял так: препроцессор грузит файл Tennis.h и главный код а потом все LIM заменяет на 20
Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

как тогда работает препроцессор
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

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

#define LIM 20
#include "Tennis.h"
Можно поменять местами и заработает (но это плохой тон программирования)
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

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

Пасиб, разобрался
Ответить