Здравствуйте, dynamic, Вы писали:
D>Добрый день.
D>Хочется чтобы мкрос в зависимости от имени файла делал разные подстановки в код D>т.е
D>имеем вызов макроса showName();
D>а макрос смотрит если текущее имя файла __LINE__== "bodies.cc" то подставляем this->>Name(); D>а иначе подставляем ths->>Name();
D>Заранее очень благодрен.
первый вариант у меня не заработал т.к есть видимость либо ths либо this, но не одновременно.
а второй у нас в проекте много bodies.cc и они добавляются постоянно тогда как я понимаю надо в каждый делать такое включение ?
хотелось бы написать и забыть может знаете еще рецептик
Здравствуйте, dynamic, Вы писали:
D> D>первый вариант у меня не заработал т.к есть видимость либо ths либо this, но не одновременно.
Можно сделать статическую функцию Name(). Тогда в контексте методов классов, где определен метод Name() будет вызыватсья метод класса, а в остельных случаях — глобальная функция. (Минусов у этого подхода тоже много. Чтобы не замусоривать глобальное пространство имен, можно придумать какое-то имя подлиннеее.)
Еще есть совсем "неправильный" прием с использованием ms-specifik (позволяет понять развертыватся ли макрос внутри члена класса лил нет):
D>а второй у нас в проекте много bodies.cc и они добавляются постоянно тогда как я понимаю надо в каждый делать такое включение ? D>хотелось бы написать и забыть может знаете еще рецептик
Насколько я понимаю, если не определить THIS_NAME, то в bodies.cc будет ошибка компиляции.
Нужно просто рядом с определением FOO, написать развернутый коментарий...
Если проблема в том, что от контекста файла зависит более обного параметра шалбона и не хочется поддерживать их в большом числе файлов, то так: