REVISIÓN: El optimizador de compilador de Visual C++ puede quitar bucles

Seleccione idioma Seleccione idioma
Id. de artículo: 306083 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Bajo ciertas condiciones excepcionales, el compilador de C++ pueden optimizar bucles fuera de un programa. Cuando examine el ensamblador compilado, es posible que tenga en cuenta que hay funciones que no contienen instrucciones bucles, aunque el código fuente contiene construcciones de bucle.

Causa

Este problema se produce debido a un error en el optimizador global.

Solución

Información de Service Pack

Para resolver este problema, obtenga el service pack más reciente de Visual Studio.NET. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
837234Lista de errores corregidos en Visual Studio .NET 2002 1

Información de revisiones

La versión en inglés de esta revisión tiene los atributos de archivo enumerados en la siguiente tabla u otros posteriores. Las fechas y horas de estos archivos aparecen en la hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   Date          Version       Size        File name
   -------------------------------------------------
   11-Apr-2002   13.0.9485.0   1,753,088   C2.dll 
   11-Apr-2002   13.0.9485.0   2,105,344   C1xx.dll 
				


Solución

Para evitar el problema, utilice un tipo de datos mayor como el valor de iterador.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:". Este problema se corrigió por primera vez en Visual Studio .NET 2002 1.

Más información

El programa siguiente es un ejemplo del comportamiento. Después de generar este programa de ejemplo mediante la configuración de compilador predeterminado de modo de lanzamiento, imprime bucle sólo una vez.
#include <windows.h>
#include <stdio.h>
#include <tchar.h>


int __cdecl _tmain (int argc, _TCHAR* argv[])
{
    unsigned char stream, tmp;

    for (stream = 0; stream < 4; stream++)
    {
        tmp = stream;
        fprintf (stderr, "Loop\r\n", (unsigned char)((tmp+4)<<5));
    }
    return 0;
}
				

Propiedades

Id. de artículo: 306083 - Última revisión: viernes, 24 de enero de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Visual Studio .NET 2002 Professional
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual C++ .NET 2002 Standard
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbbug kbfix kbqfe KB306083 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 306083

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com