Здравствуйте, Аноним, Вы писали:
Вот узнал (спасибо open-source'у
), что с помощью макросов типа
#define glue( x, y ) x ## y
можно "сшивать" имена в коде статически.
И стало интересно, можно ли такое провернуть динамически?
Интересно как для Windows так и для Linux. Если кто знает, подскажите пожалуста.
Не совсем понятен вопрос. Что значит 'такое провернуть диначмиески'? Образец псевдокода?
Когда в C++ пишется
int nVar;
nVar = 0;
То при изготовлении .exe файла 'nVar' заменяется адресом — на стеке там или где удобно. Соответственно, с точки зрения получения кода из исходника, имя переменной nVar — это удобно читаемый человеком адрес в памяти, размером в N байт. Непосредственно при выполнении программы в ней ТЕКСТ 'nVar' не учавствует — только цифра, обозначающая адрес (смещение в случае стека). Как можно в рантайме склеивать то, чего в рантайме по определению нет?
Получается если бы я зашил функции в длл то используя GetProcAddress() можно получить адрес функции исспользуя ее имя.
Можно ли использовать GetProcAddress() также и для выполняемого в данное время ехе-модуля получив его Handle?
Чтобы получить адрес функции с помощью GetProcAddress, эта функция должна быть прописана в .exe файле в разделе 'торчащие наружу функции'

(export table). Если функции в этой таблице нету (обычно для .exe), то нет и ее имени.
Или лучше использовать какую-то свою таблицу для соответствия имени фукции и ее адреса?
Лучше — для чего? Есть какая-то задача которую нужно решить или просто хочется задней левой пяткой почесать правое верхнее ухо?