¿Qué static, extern y inline (y sus combinaciones) significa, en la que se Objetive-C usando el compilador LLVM?

También, me di cuenta de que hay CG_EXTERN y CG_INLINE macros. Debemos ser los uso en lugar?

(No he podido encontrar una fuente con una explicación clara de lo que he pensado que podría ser útil para crear una aquí, o punto de que si alguien sabe de uno)

  • Me temo que esto es una pregunta acerca de C en lugar de Obj-C.
  • Yo diría que el Núcleo de Gráficos de macros poner la pregunta en Apple territorio.
InformationsquelleAutor hpique | 2012-08-16

2 Comentarios

  1. 33

    ¿Qué estática, externas y en línea (y sus combinaciones) significa, en la que se Objetive-C usando el compilador LLVM?

    La misma, como en C, a menos que compile como ObjC++, entonces ellos tienen el mismo significado que se encuentra en C++.

    Así que aquí es una introducción para C, pero leer los enlaces si usted está listo para el uso de estos, ya que los detalles son importantes:


    Extern

    Resumen: Indica que un identificador está definido en otra parte.

    Detalles: http://tigcc.ticalc.org/doc/keywords.html#extern

    Estática

    Resumen (valor): Conserva el valor de la variable a sobrevivir después de que su ámbito de aplicación termina.

    Resumen (función): Efectivamente emite sin nombre copias – útil para funciones privadas en C, y puede ser utilizado para escapar de los múltiples errores de definición cuando se utiliza con las funciones inline.

    Detalles: http://tigcc.ticalc.org/doc/keywords.html#static

    En línea

    Resumen: se Sugiere que el cuerpo de una función debe ser trasladada a las personas que llaman.

    Detalles: http://tigcc.ticalc.org/doc/gnuexts.html#SEC93


    Tenga en cuenta que en línea y estática son un poco más complejos en C++ (como casi todo en C++).

    También encontré que hay CG_EXTERN y CG_INLINE macros. Debemos ser los uso en lugar?

    No.

    Lugar, usted debe especificar su propia, con sus propios significados, si usted necesita este tipo de funcionalidad. CG_EXTERN y CG_INLINE tienen significados específicos (que puede cambiar), y están destinados a ser utilizados en su contexto definido, también, no quiero tener que incluyen todo un puñado de marcos (todos CoreGraphics/ApplicationServices/CoreFoundation/etc.) cuando se desea especificar algo es extern de una manera que funciona en C y C++.

    • Esta respuesta sería perfecto si sólo tenía una cita del correspondiente enlace, de manera que el lector no tiene que hacer clic de distancia de por LO que para encontrar la respuesta, a menos que quería leer más =)
    • gracias. por desgracia, static y inline cada uno requiere de más de una página si una cita completa se han añadido a la respuesta. así que… creo que no voy a citar ellos =\
    • Los enlaces que se refieren a haber bastante descripciones cortas, que cabrían en una respuesta, es sólo mi opinión. Me gustaría escribir una nueva respuesta, pero ese tipo de sentiría como robar el tuyo =)
    • eso no suena muy SECO
    • añadido algunos resúmenes
    • ja, ja =)
    • Estoy muy feliz, impresionante respuesta!
    • Estoy de acuerdo en mantener las cosas SECAS en el interior de eso, pero cuando se trata de referirse a los de fuera no creo que eso cuente. Al final sólo quería darle a Justin mi opinión sobre cómo hacer que su buena respuesta impresionante =)

  2. 5

    Justin cubierto la mayor parte de ella, pero he encontrado algunas otras bonitas recursos para aquellos que quieran profundizar más profundo:

    Declarando una función en línea de decirle al compilador para reemplazar el código completo de la función directamente en el lugar desde donde fue llamado. Esta es una característica avanzada que requiere la comprensión de menor nivel de programación.

    Las funciones Inline


    De este MODO la pregunta tiene una enorme respuesta acerca de la extern variables – variables definidas «a otro lugar» – pero deben ser utilizados también «aquí».


    Estática conserva variable de la vida fuera de alcance. La Variable es visible en el ámbito de aplicación se declaró.

    ¿Qué hace una variable estática significa?


    • static tiene diferentes significados en diferentes (función/variable/variable local) contextos.
    • No realmente, la definición anterior se aplica a todo el contexto. Las variables locales declaradas estática, permanecer vivos fuera del ámbito de aplicación. Sin embargo, ellos no son visibles fuera de alcance, como se indicó anteriormente: «La Variable es visible en el ámbito de aplicación fue declarado.» En objective c estática de las funciones se declaran con (+) y no utilice la palabra clave static, por lo tanto estamos hablando sólo de las variables de aquí. Pero el concepto es el mismo: La función estática sigue siendo el mismo contexto en toda la aplicación. Sólo su visibilidad depende del ámbito donde se declara.
    • Funciones estáticas no son declarados con el signo más (+). Estos son la clase de nivel de los métodos que usted está pensando. Funciones estáticas en Objective-C son exactamente lo que son en C, y declarada la misma manera.
    • Sí tienes razón, lo siento por la confusión.

Dejar respuesta

Please enter your comment!
Please enter your name here