En C: por qué solo las funciones en línea con vinculación interna (es decir, declaradas con estática) pueden hacer referencia (es decir, copiar dirección, leer, escribir o llamar) una variable o función en el alcance de archivo con duración de almacenamiento estática mientras otras funciones en línea ¿podría no?¿Funciones en línea con enlace interno?
Respuesta
Así es como se definen las cosas.
La función en línea se insertaría en el módulo al que se llama. Por lo tanto, no puede acceder a las cosas privadas en su módulo donde está definido.
Si la función en línea es solo se usa en ese módulo (enlace interno). Entonces es seguro otorgarle acceso a las cosas "privadas" de ese módulo.
Un objeto o función con alcance de archivo, declarado con el especificador de almacenamiento "estático" tiene enlace interno. Si bien su duración es la ejecución completa del programa, un objeto con enlace interno no se declara para (es decir, es visible desde) otras unidades de traducción.
Para una función en línea con enlace externo, el compilador puede:
- llamada la ejemplo dentro de la unidad de traducción en el que la función se declara
- realizar una sustitución en línea en el punto de la llamada
- crear un idénticos pero separados ejemplo de la función dentro de la unidad de traducción llamada
En los dos últimos casos, los objetos con enlace interno no serían visibles. Por lo tanto, una función en línea con enlace externo no puede hacer referencia a un identificador con enlace interno.
Además, "no debe contener una definición de objeto modificable con duración de almacenamiento estático", ya que podría dar lugar a múltiples instancias de ese objeto que probablemente no sea el comportamiento previsto.
- 1. Error de enlace para funciones en línea
- 2. Enlace interno con la palabra clave estática en C
- 3. Enlace de secuencia con funciones puras
- 4. Funciones en línea
- 5. Funciones en línea en C++
- 6. Recorte interno con Java Graphics
- 7. C++: funciones en línea y generación de código de tiempo de enlace
- 8. Comprueba si un enlace es interno o externo
- 9. Como hacer funciones en línea en C#
- 10. ¿Hay funciones en línea en Java?
- 11. Averiguar qué funciones estaban en línea
- 12. Funciones escalares en línea: ¿real o vaporware?
- 13. Externo interno estático C# con atributo InternalCall - ¿interno o externo?
- 14. Funciones de una línea en C?
- 15. retorno por valor funciones en línea
- 16. Seleccionar texto interno con jQuery
- 17. Definición múltiple de funciones en línea al vincular bibliotecas estáticas
- 18. enlace dinámico con LLVM
- 19. ¿Por qué las funciones en línea tienen enlaces externos por defecto?
- 20. funciones en línea todavía aparecen en el archivo .prof
- 21. Generando error de tiempo de enlace para funciones obsoletas
- 22. Comportamiento de las funciones en línea __LINE__ en
- 23. funciones de miembro de enlace de forma variada
- 24. jquery unwrap Interno
- 25. ¿Cómo documentas las funciones y clases de PHP en línea?
- 26. C funciones en línea y error "indefinido externo"
- 27. Mejores prácticas: ¿muchas funciones/métodos pequeños, o funciones más grandes con componentes de proceso lógicos en línea?
- 28. ¿Cómo prevenir un salto de línea en un enlace html?
- 29. C++ 0x envolturas lambda vs. enlace para pasar funciones miembro
- 30. Enlace con StringFormat en un control personalizado