IIUC, вы определяете свой собственный язык и ищете подходящий алгоритм искажения имени.
Возможно, вы захотите использовать Intel et.al. Алгоритм искажения имени Itanium , который используется g ++ на всех платформах. В конкретном случае вы можете искажать каждое из своих имен, как если бы объявление C ++ было
namespace module{ namespace name { namespace Vversion /*e.g. V1_0 */ {
void *function(int){}
}}}
который будет искажать как
_ZN6module4name4V1_08functionEi
Поскольку все ваши символы используют этот алгоритм, они не могут конфликтовать друг с другом. Они также не могут конфликтовать со стандартной функцией C под названием _ZN6module4name4V1_08functionEi
, поскольку все имена, начинающиеся с _Z (или _UPPERCASE), зарезервированы для реализации (из C). Если вам нужна удобная возможность вызова из g ++, вы можете использовать это точное соглашение; иначе вы выбираете букву, отличную от Z.