Domanda

Come chiamare un nome-simbolo storpiato da C?

module.name:version

void* function(TypeSig); // Type of the function

avrei voluto essere in grado di utilizzare codepaths scritto nella mia lingua in C. La funzione convenzione di chiamata è circa lo stesso. E 'solo che devo storpiare nella versione e il percorso del modulo all'interno dei simboli esporto, e ho la stessa convenzione identificatore di C ha, quindi non posso semplicemente usare sottolineatura.

È stato utile?

Soluzione

IIUC, si sta definendo la propria lingua, e alla ricerca di un nome adatto algoritmo per l'elaborazione.

Si potrebbe desiderare di utilizzare il processore Intel et.al. nome Itanium algoritmo per l'elaborazione , che viene utilizzato da g ++ su tutti piattaforme. Per il caso specifico, si potrebbe rovinate ciascuno dei vostri nomi, come se la dichiarazione del C ++ è stato

namespace module{ namespace name { namespace Vversion /*e.g. V1_0 */ {
  void *function(int){}
}}}

che manipolare come

_ZN6module4name4V1_08functionEi

Come tutti i simboli utilizzano tale algoritmo, non possono entrare in conflitto con l'altro. Essi, inoltre, non possono entrare in conflitto con una funzione C standard chiamato _ZN6module4name4V1_08functionEi, come tutti i nomi che iniziano con _Z (o, _UPPERCASE) sono riservati per l'attuazione (C). Se si desidera conveniente esigibilità da g ++, è possibile utilizzare questa convenzione esatto; altrimenti si sceglie una lettera diversa da Z.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top