Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Макросы 
:(
    Опции темы
shad0w
Дата 10.3.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 9.5.2005

Репутация: нет
Всего: нет



Вот простой код:
Код
#include <stdio.h>

#define F00(a) (a.t1)

struct TEXT{
    char * t1;
};

struct TEXT s;

int main()
{
    s.t1="qqqqqqqqqqq";
    printf("%s\n",F00(s));
    
    char * smbl = "ssssss";

    return 0;
}



Возможно ли зделать так, чтоб вот тут #define F00(a) (a.t1), а бралось со строки smbl? Тоесть, чтоб в качестве параметра F00 брался символ со строки smbl?
PM MAIL   Вверх
kondr
Дата 10.3.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 24.11.2005

Репутация: нет
Всего: 1



Конечно нет. Макрос просто заменяет некоторый текст (который ты указываешь после #define) на другой текст.

Вот эта строка printf("%s\n",F00(s)) после подстановки преобразуется в printf("%s\n",s.tl).
Если б ты написал printf("%s\n",F00(ёклмн)) оно бы преобразовалось в printf("%s\n",еклмн.tl) ну и естественно потом бы не скомпилировалось.

Так что все это происходит на фазе анализа текста. Как ты себе представляешь подстановку символа из строки, которой еще физически не существует?

PM MAIL   Вверх
Neitron
Дата 10.3.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



В с++ нет что-то типо eval как в javascript или php.
И оно нафиг не нужно. Чтобы добиться того что ты хочешь, можно заюзать map

Это сообщение отредактировал(а) Neitron - 10.3.2006, 14:10


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.