Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

[C++ Warning] _str.h(190): W8058 Cannot create pre-compiled

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: [C++ Warning] _str.h(190): W8058 Cannot create pre-compiled Responder citando

Por si fuera poco el otro warning que he posteado aqui estoy con otro mas

Estos warnings han aparecido desde que he agregado una dll a mi programa

Esta dll la he agregado siguiendo los pasos descritos por Leo en un ejemplo de este mismo foro

He agregado al programa que usa la dll la libreria correspondiente que el propio Builder 2006 me crea

El programa funciona correctamente, pero quisiera saber si es que me he olvidado de añadir algo en la dll o en el programa principal

saludos

phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

https://cppbuilder.es/viewtopic.php?t=10764
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Leo por la ayuda

Tengo un duende sobre el que ya he consultado y me ha respondido César, pero no consigo encontrar que es.

Se trata de este warning:

[C++ Warning] Unit1.h(552): W8027 Functions containing switch are not expanded inline

Cuando hago click en el error me remarca en rojo la linea de "BEGIN_MESSAGE_MAP"

void __fastcall TForm1::WMCambioEnDispositivo(TMessage &msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DEVICECHANGE,TMessage,WMCambioEnDispositivo);
END_MESSAGE_MAP(inherited)


La cabecera de la clase es esta:

class TForm1 : public TForm
{
__published: // IDE-managed Components

No logro saber que causa este warning tan raro.

Te agradeceria me orientases sobre que y donde poder buscar este duende

phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

La ayuda del BCB lo explica seguramente mejor que yo. Nos quiere decir que hay varias palabras reservadas, entre ellas "switch" que no pueden ser expandidas en línea, incluso cuando se utiliza la palabra reservada "inline". Lo que hará es crear una copia de la función por cada vez que esta cabecera sea incluida.

La macro "BEGIN_MESSAGE_MAP" está en la cabecera "sysmac.h" y esto es lo que pone (aquí se ve como usa la palabra reservada "switch"):
Código:
#define BEGIN_MESSAGE_MAP virtual void __fastcall Dispatch(void *Message) \
                          {                                               \
                              switch  (((PMessage)Message)->Msg)          \
                              {

La razón por la que te aparece es porque seguramente en las opciones del proyecto has seleccionado la opción de compilar como "Release" en vez de "Debug".

Puedes o bien deshabilitar este aviso en las opciones del proyecto:

    Project -> Options... -> Pestaña: Compiler
    Marca el checkbox: [x] Disable inline expansions

O bien por código poniendo la siguiente línea antes del bloque donde te interese deshabilitar temporalmente este aviso:

    #pragma option -vi-
Código:
void __fastcall WMCambioEnDispositivo(TMessage &msg) {};
// Deshabilitamos temporalmente el aviso
#pragma option -vi-
BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_DEVICECHANGE, TMessage, WMCambioEnDispositivo);
END_MESSAGE_MAP(inherited)
// Lo volvemos a dejar como estaba originalmente
#pragma option -vi.
// o bien sin el punto del final que forzaria su habilitación
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

En la pestaña Debugging he desmarcado la opción "Inline fuction expansion (-vi) y ya no me aparece el dichoso Warning

Que descanso

Muchisimas gracias Leo

Phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.