¿ Hay alguna forma de eliminar esos warnings solo para uno o varios archivos de cabecera ?
«Al César lo que es del César y a Dios lo que es de Dios».
— Jesús de Nazaret — Mateo 22:20.
C++ y C son lenguajes distintos con convenciones distintas, normas distintas, estándares distintos e incluso distintas palabras clave. Son dos mundos que no deberían mezclarse (por eso, si se necesita una cabecera de C en C++ se debe usar la versión adaptada).
Usar convenciones de C en C++ provoca en muchos casos una alarma y así debe ser. Eliminar dicha alarma puede ser contraproducente y propenso a errores, esas alarmas están ahí por un buen motivo ¿Qué pasa si eliminas esa alarma (y te olvidas de reactivarla) y alguien usa esas conversiones? ¡Pues que esa injuria pasará desapercibida!
Por suerte (o por desgracia) C y C++ están estrechamente relacionados y muchas veces se considera necesario usar librearías de C en C++ (al revés es casi imposible), por eso se permite marcar bloques de código como si perteneciesen a C:
extern "C"
{
#include "Cabecera_de_c.h"
}
Todo el código incluido en el bloque extern "C"
será tratado como C con sus convenciones, normas y palabras clave. Puedes dejar las alarmas activadas.
Esta herramienta, añade además una clara semántica al bloque: Eso pertenece a otro lenguaje, lo cuál puede ser de utilidad para otros programadores que examinen el código.