Estoy programando en c unas cosas, el problema que tengo es que tengo unas cuantas constantes y funciones de uso comun en el codigo (o sea en los .c). Lo que hice fue agruparlas en un utils.h y un utils.c.
El problema se presenta cuando quiero incluir ese header en muchos archivos .c o .h, ya que al compilar el linker me tira error de multiples definitions de las variables y funciones de utils.
Me han dicho que se puede solucionar utilizando extern, pero lo que no entiendo es si debo volver a colocar la definicion de las variables o funciones en el .c o .h donde quiero hacer uso de ellas, pero con la palabra clave extern al comienzo?. Hay alguna otra solución?
Ej:
en utils.h y utils.c tengo una función que se llama powerof2(...)
int powerof2(...);
cuando hago uso de ella en, por ejemplo, el main.c, me tira error de que está definida en utils y en main. Debería usar el extern asi, dentro del main?:
extern int powerof2(...);