... en C++¿Cómo puedo evitar el cambio de nombre?
Respuesta
No puede. Está integrado en compiladores para permitirle sobrecargar funciones y tener funciones con el mismo nombre en diferentes clases y cosas por el estilo. Pero puede escribir funciones que están destrozadas como funciones de C. Esos pueden ser llamados desde el código C. Pero los que no se puede sobrecargar y no puede ser llamado por C punteros a funciones "normales" ++:
extern "C" void foo() {
}
La función anterior se destrozados como funciones C para su compilador. Eso puede incluir ningún cambio en el nombre, o algunos cambios como un "_" al frente o más.
Usted quiere decir para que pueda exportar su función a partir de una biblioteca? extern "c" {}
Otra forma:
Nombres Control de los usados en el código ensamblador (gcc spec.)
Puede especificar el nombre que se utiliza en el código ensamblador para una función C o variable por escrito la asm (o __asm__) palabra clave después del declarador. Depende de usted asegurarse de que los nombres de ensamblador que elija no entren en conflicto con otros símbolos de ensamblador o registros de referencia.
para especificar el nombre del ensamblador para las funciones, escribir una declaración de la función antes de su definición y poner asm allí, así:
int func() asm ("MYFUNC");
int func()
{
g++
compilará y nm -D
salida será
0000000000001e02 T MYFUNC
en lugar de
0000000000001e02 T _Z4funcv
probado en g ++ 4.9.2
- 1. Hibernar y cómo evitar el cambio de nombre de modales
- 2. ¿Cómo cambio el nombre de un gemset?
- 3. ¿Cómo cambio el nombre del directorio .git?
- 4. Cómo cambio el nombre de un índice en MySQL
- 5. ¿Cómo puedo evitar una estructura \ union sin nombre?
- 6. ¿Cómo puedo obtener el cambio de EditText?
- 7. Nombre de cambio de archivo de cambio de Amazon S3
- 8. iPhone/iPod - evitar el cambio de tamaño de fuente
- 9. Columnas con nombre Cambio de nombre
- 10. Cómo cambio el nombre de la aplicación en iTunesconnect
- 11. Cambio de nombre de hilo
- 12. ¿Cómo cambio el nombre de los archivos usando R?
- 13. ¿Cómo cambio el nombre de una función bash?
- 14. Android cambio desarrollador Nombre
- 15. ¿Cómo puedo detener el cambio de nombre de la función exportada de mi DLL?
- 16. Jquery: evitar el cambio de una entrada de selección
- 17. Cómo cambio el nombre de una máquina virtual de SharePoint
- 18. Subversion, cambio de nombre, Wha?
- 19. ¿Cómo cambio el nombre de un atributo usando XSLT?
- 20. NetBeans: ¿cómo cambio el nombre de un proyecto?
- 21. ¿Cómo cambio el nombre de un esquema MySQL?
- 22. ¿Cómo cambio el nombre de todos los archivos a minúsculas?
- 23. ¿Cómo cambio el nombre de una clave foránea en mysql?
- 24. ¿Cómo cambio el nombre de las sesiones R en ESS?
- 25. ¿Cómo puedo evitar el estado global?
- 26. ¿Cómo cambio el nombre del objeto externo usando WCF?
- 27. Evitar cambio de orientación en iOS Safari
- 28. cambio de nombre de variable matlab
- 29. ¿Cómo puedo evitar que mercurial empuje subrepos?
- 30. android: Cómo evitar el cambio de tamaño de la ventana cuando se muestra el teclado virtual
Sólo una nit de menor importancia: Estas funciones sin duda se pueden llamar desde C++ punteros de función: extern "C" vacío foo() {printf ("foo \ n"); } int main() { void (* f)(); f = foo; f(); } –
Creo que te refieres a "desmantelado como las funciones C" :-) – paxdiablo
Los compiladores de Pax, C también pueden deformarse. gcc por ejemplo tiene la opción "-fleading-underscore". Recuerdo que un tipo me dijo que macosx destrozaba sus nombres C con un guión bajo. (No tengo macosx así que no puedo verificar :)). –