| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Макросы |
| Автор: shad0w 10.3.2006, 01:30 | ||
Вот простой код:
Возможно ли зделать так, чтоб вот тут #define F00(a) (a.t1), а бралось со строки smbl? Тоесть, чтоб в качестве параметра F00 брался символ со строки smbl? |
| Автор: kondr 10.3.2006, 14:02 |
| Конечно нет. Макрос просто заменяет некоторый текст (который ты указываешь после #define) на другой текст. Вот эта строка printf("%s\n",F00(s)) после подстановки преобразуется в printf("%s\n",s.tl). Если б ты написал printf("%s\n",F00(ёклмн)) оно бы преобразовалось в printf("%s\n",еклмн.tl) ну и естественно потом бы не скомпилировалось. Так что все это происходит на фазе анализа текста. Как ты себе представляешь подстановку символа из строки, которой еще физически не существует? |
| Автор: Neitron 10.3.2006, 14:10 |
| В с++ нет что-то типо eval как в javascript или php. И оно нафиг не нужно. Чтобы добиться того что ты хочешь, можно заюзать map |