Question

Comment appeler un symbole de nom mutilées de C?

module.name:version

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

Je veux être en mesure d'utiliser codepaths écrit dans ma langue en C. La fonction convention d'appel est sur le même. Il est juste que je dois mutiler dans la version et le chemin du module dans les symboles que je l'exportation, et j'ai la même convention d'identifiant que C a, par conséquent, je ne peux pas utiliser underscore.

Était-ce utile?

La solution

IIUC, vous définissez votre propre langue, et êtes à la recherche d'un nom approprié algorithme mutiler.

Vous pouvez utiliser le processeur Intel et.al. nom algorithme mutiler Itanium, qui est utilisé par g ++ sur tous les plates-formes. Pour le cas spécifique, vous pouvez Mutilation chacun de vos noms, comme si la déclaration du C était

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

qui comme mutiler

_ZN6module4name4V1_08functionEi

Comme tous vos symboles utilisent cet algorithme, ils ne peuvent pas entrer en conflit les uns avec les autres. Ils peuvent également ne pas entrer en conflit avec une fonction standard C appelée _ZN6module4name4V1_08functionEi, comme tous les noms commençant par _Z (ou, _UPPERCASE) sont réservés à la mise en œuvre (C). Si vous voulez de g pratique de remboursement anticipé ++, vous pouvez utiliser cette convention exacte; ce que vous choisissez une autre lettre de Z.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top