Объект функция с возможностью узнать имя функции (при правильной инициализации конечно)
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
Препроцессор будет игнорировать все что находится между кавычками -- ибо для него это строка, а не вызов макроса. Здесь единственный вариант -- сделать все ручками, но как-то это не правильно.
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
хотя, если запустить с опцией -Е, видно, что код правильный. Странно.
Есть вариант пользоваться отдельно препроцессором и отдельно компилятором
Разве нельзя использовать указатель на функцию?
Я так понял необходимо чтоб строка и имя функции совпадало, для этого ранее я предложил вариант с объектом-функцией.
Bombers launch with no recall + Minutes warning of the missile fall
Take a look at your last sky + Guessing you won't have the time to cry
--- Iron Maiden (Brouther Than A Thousand Suns, 2006)
У меня в одной единице компиляции софтина вытягивает из *.so указатель на функцию с определённым именем.
В другой единице компиляции (собственно - сама эта .so) должна быть функция с таким именем.
У меня в одной единице компиляции софтина вытягивает из *.so указатель на функцию с определённым именем.
В другой единице компиляции (собственно - сама эта .so) должна быть функция с таким именем.
ИМХО, не лучшая идея, делать это с макросами.
We have no beginning, we have no end. We are infinite.
Мне-то не нужно узнавать имя функции (да ещё в ней самой).
Мне нужно чтобы один программный модуль (программа) лез в другой программный модуль (библиотеку) за указателем на функцию и не ошибся с именем
Можно, конечно, прописать всё жёстко и в одном и в другом модуле, но, т.к. всё-равно оба модуля используют один h'ник то и пусть там будет прописано как называется функция.
И один - лезет за этой функцией, а второй - называет её именно так как надо.
If you want to stringify the result of expansion of a macro argument,
you have to use two levels of macros.
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
==> "foo"
xstr (foo)
==> xstr (4)
==> str (4)
==> "4"