Pregunta

Férula me da la siguiente advertencia:

encrypt.c:4:8: Function exported but not used outside encrypt: flip
  A declaration is exported, but not used outside this module. Declaration can
  use static qualifier. (Use -exportlocal to inhibit warning)
   encrypt.c:10:1: Definition of flip

Desde que llamé férula sólo en este archivo ¿cómo sabe eso?

#include        <stdio.h>
#include        <stdlib.h>

int    flip( int a)
{
        int b;
        b = a;
        b ^= 0x000C;
        return b;
}

int     blah(int argc, char    *argv[]) {

        FILE    *fp = NULL, *fpOut=NULL;
        int             ch;
        ch = 20; flip(20); return (ERROR_SUCCESS);
}

Incluso me deshice de principal, por lo que no podía darse cuenta de que el archivo está completa de ninguna manera. Estoy totalmente perplejo!

¿Fue útil?

Solución

Usted puede encontrar que si añade una cabecera que declaró flip() - como usted debe, por supuesto - a continuación, splint ¿no se quejan. También debe declarar blah() en la cabecera también.

No estoy totalmente convencido de que esta es la explicación porque blah() no se utiliza en absoluto (aunque utiliza flip()) y que no menciono splint quejarse de eso.

Sin embargo, es una buena práctica para hacer todas las funciones (en C) static hasta que se pueda demostrar que se necesita fuera de su archivo de origen, y luego asegurarse de que hay un encabezado que declara la función, y que la cabecera es utilizado en el archivo que define la función y en todos los archivos que utiliza la función.

consejos

En C ++, el 'cada función debe static' se convierte en 'cada función debe ser definida en el espacio de nombres en el anonimato'.

Otros consejos

  

Desde que llamé férula sólo en este archivo ¿cómo sabe eso?

Ha respondido a su pregunta. Usted ha alimentado en un archivo de pelusa, para que la pelusa sabe sólo existe el archivo a ser atendidos (aparte de la cabecera estándar incluye, por supuesto).

int flip () no se declara como estática, por lo que puede ser potencialmente utilizado externamente. Dado que se invocó férula con un único archivo de origen, se dice correctamente que su función, si no se usa externamente, debe ser declarado estática

Sólo puede informar sobre lo que ve. Ignorar la advertencia o siga las instrucciones para inhibirla si usted sabe mejor que lo que dice. No asuma que una herramienta como esta tiene que conocer su programa mejor que tú.

Si realmente no está destinado a ser utilizado fuera del archivo, puede declarar que estática y debe corregir el problema, pero será inaccesible desde otros archivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top