2012-05-07 15 views
5

Estoy compilando con cl.exe versión _MSC_FULL_VER == 160030319 con el nivel de advertencia a 4. consigo esta advertencia:yvals.h advertencia C4514 en Windows SDK 7.1 compilador

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(773) : warning C4514: 'std::_Mutex::_Mutex' : unreferenced inline function has been removed 

¿Qué es este trozo de código fuente:

__thiscall _Mutex(_Uninitialized) 
{ // do nothing 
} 

yvals.h está incluido en stdint.h la que estoy incluyendo de este modo:

#pragma warning(disable:4514) 

#include <stdint.h> 

#pragma warning(default:4514) 

Pero todavía no se deshace de la advertencia. ¿Estoy haciendo algo mal aquí?

+0

Hmm ... parece que 'yvals.h' se está incluyendo en otro lugar que' stdint.h'. Si elimino el 'default: 4514' la advertencia desaparece –

+0

Envolví todos mis includes pero todavía persiste –

+0

No entiendo esto - Acabo de ver la salida del preprocesador C ('/P') y todo parece estar en orden - La línea ofensiva 'yvals.h' está correctamente envuelta. –

Respuesta

4

Encontré la respuesta here. Alguien lo reportó como un error, pero fue cerrado como por diseño. La respuesta es que la advertencia no se activa hasta el final de la unidad de traducción. Cita:

Gracias por informar de este problema. Lo he resuelto como Por diseño porque las advertencias 4514 y 4710 se emiten al final de la unidad de traducción (una unidad de traducción es un archivo fuente y todos sus encabezados incluidos). Es por eso que deshabilitarlos para parte de la unidad de traducción no tiene ningún efecto. Aunque los números de línea pueden hacer que parezca que el compilador está emitiendo estas advertencias en el medio de la unidad de traducción mientras está compilando el código, ese no es el caso.

Advertencia 4514 "función en línea sin referencias se ha eliminado" es emitida al final de la unidad de traducción por el compilador de front-end (responsable de analizar C++), porque sólo entonces puede determinar que nada en la unidad de traducción referencias que función en línea. Es busca el número de línea de la función, pero si la advertencia es emitida o no depende de si está habilitada al final de la unidad de traducción , no si se habilitó al compilar esa función .

Por lo tanto, debe mantenerlo siempre desactivado o no preocuparse por ello.

+0

eso es frustrante. Lo inhabilitaré en toda la compilación, tenemos que tener una advertencia de libre integración continua :(Gracias por la respuesta :) !! –

Cuestiones relacionadas