Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Почему не компилится...?


Автор: Dov 13.5.2003, 18:52
Почему не компилится этот код?
Код

#include <iostream.h>
#define ENIUQ(TEMPLATE) cout << TEMPLATE << "(" << #TEMPLATE << ");}";
void main()
{ENIUQ("#include <iostream.h>\n#define ENIUQ(TEMPLATE) cout << TEMPLATE
<< \"(\" << #TEMPLATE << \");}\";\n\nvoid main()\n{ENIUQ");}

У меня VC++6.

Автор: Step 13.5.2003, 18:54
а какую ошибочку дает не скажеш

Автор: Dov 13.5.2003, 18:59
--------------------Configuration: sys - Win32 Debug--------------------
Compiling...
SELF.CPP
D:\Newman2\sys\SELF.CPP(5) : error C2065: 'TE' : undeclared identifier
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2065: 'n' : undeclared identifier
D:\Newman2\sys\SELF.CPP(5) : error C2146: syntax error : missing ';' before identifier 'nvoid'
D:\Newman2\sys\SELF.CPP(5) : error C2065: 'nvoid' : undeclared identifier
D:\Newman2\sys\SELF.CPP(5) : error C2146: syntax error : missing ';' before identifier 'main'
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2146: syntax error : missing ';' before identifier 'n'
D:\Newman2\sys\SELF.CPP(5) : error C2143: syntax error : missing ';' before '{'
D:\Newman2\sys\SELF.CPP(5) : error C2017: illegal escape sequence
D:\Newman2\sys\SELF.CPP(5) : error C2065: 'ENIUQ' : undeclared identifier
D:\Newman2\sys\SELF.CPP(5) : error C2143: syntax error : missing ';' before 'string'
D:\Newman2\sys\SELF.CPP(5) : error C2296: '<<' : illegal, left operand has type 'char [1]'
D:\Newman2\sys\SELF.CPP(5) : error C2297: '<<' : illegal, right operand has type 'char [4]'
D:\Newman2\sys\SELF.CPP(9) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

sys.exe - 22 error(s), 0 warning(s)

Автор: Step 13.5.2003, 19:04
нашел у тебя много "}" возможно на них сбой.....

Автор: Dov 13.5.2003, 19:08
Так это же внутри строки, как обычный символ.

Автор: Step 13.5.2003, 19:13
интересно как компилятор воспримит такую последовательность \"

Автор: Step 13.5.2003, 19:14
и что такое ТЕ, первая ошибка

Автор: Dov 13.5.2003, 19:15
Так выводятся кавычки в строке

Автор: Dov 13.5.2003, 19:17
Извиняюсь, просто у себя в проге я обрезал" TEMPLATE " до "TE".

Автор: Step 13.5.2003, 19:21
ты нормальный код дай, может плохо обрезал

Автор: Dov 13.5.2003, 19:25
#include <iostream.h>
#define ENIUQ(TE) cout << TE << "(" << #TE << ");}";
void main()
{
ENIUQ("include <iostream.h>\ndefine ENIUQ(TE) cout << TE << \"(\" << TE << \");}\";\n\nvoid main()\n{ENIUQ");

}

Автор: Step 13.5.2003, 19:32
Цитата
#define ENIUQ(TE) cout << TE << "(" << #TE << ");}";

#define ENIUQ(TE) (cout << TE << "(" << #TE << ");}");

Автор: Dov 13.5.2003, 19:37
Не помогает.
Вот так: << \""(\"" << выдаёт одну ошибку
: fatal error C1057: unexpected end of file in macro expansion
А вот так:<< \""(\"" << TE << \"");}\"" две
: error C2001: newline in constant
: fatal error C1057: unexpected end of file in macro expansion

Автор: Step 13.5.2003, 19:39
извини забыл чу чуть, там где у тебя в кавычках один символ то двойные кавычки замени на одинарные.....

Автор: Dov 13.5.2003, 19:43
Так ещё хуже

Автор: Step 13.5.2003, 19:44
ну не знаю завтра загружу твой код на машину с с++ и посмотрю может че и накопаю

Автор: TiHo 14.5.2003, 09:18
Скажи что программа должна делать?

В таком виде проходит компиляция -

Цитата

#include <iostream.h>

#define ENIUQ(TE) (cout<<TE<<"("<<TE<<");}");

void main()
{

ENIUQ("include <iostream.h>\ndefine ENIUQ(TE) cout << TE << \"(\" << TE << \");}\";\n\nvoid main()\n{ENIUQ");

}

А если добавить # то 24 ошибки

Автор: Step 14.5.2003, 09:32
программа должна выводить себя до определенной позиции

Автор: man2002ua 14.5.2003, 09:42
Убери "#"

Автор: Step 14.5.2003, 09:54
man2002ua а чем он мешает

Автор: Unregistered 15.5.2003, 09:25
# это директива препроцесора когда компилятор находит # он хочет INCLUDE
DEFINE и т.д.

Автор: TiHo 15.5.2003, 09:36
# это директива препроцесора когда компилятор находит # он хочет INCLUDE
DEFINE и т.д

в смысле, это я написал smile.gif

Автор: Step 15.5.2003, 16:12
но она стоит в кавычках и анализироваться не должне

Автор: TiHo 18.5.2003, 11:57
Step

В том-то и дело, что без кавычек...

<< #TEMPLATE <<

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)