Udostępnij za pośrednictwem


/ ol (określić zachowanie zmiennoprzecinkowych)

Określa zachowanie zmiennoprzecinkowych w pliku kodu źródłowego.

/fp:[precise | except[-] | fast | strict ]

Flagi

  • precise
    Wartość domyślna.

    Zwiększa spójność badań zmiennoprzecinkowych równości i nierówności, wyłączając optymalizacje, które mogłyby zmienić dokładność obliczeń zmiennoprzecinkowych, który jest wymagany do ścisłego zgodność ANSI.Domyślnie kompilator używa coprocessor 80-bitowe rejestry do przechowywania wyników pośrednich obliczeń zmiennoprzecinkowych.Zwiększa szybkość działania programu i zmniejsza rozmiar programu.Ponieważ obliczenia pociąga za sobą typów danych zmiennoprzecinkowych, które są reprezentowane w pamięci przez mniej niż 80 bitów, jednak przewożących dodatkowe bity precyzji (80 bits minus liczba bitów w mniejszych typu zmiennoprzecinkowego) poprzez obliczenie długie może wygenerować niespójne wyniki.

    Z /fp:precise na procesorach x 86 procesorów, kompilator będzie wykonywać zaokrąglania zmienne typu float właściwego precyzji dla przydziałów i poświaty i podczas przekazywania parametrów funkcji.To zaokrąglania gwarancje dane nie zachowuje żadnego znaczenia większa niż pojemność jego typu.Program skompilowany z /fp:precise może być wolniejsze i większy niż skompilowany bez /fp:precise./fp:preciseWyłącza intrinsics; Zamiast tego używane są procedur standardowych run-time library.Aby uzyskać więcej informacji, zobacz /OI (generowanie funkcje wewnętrzne).

    Następujące zachowanie zmiennoprzecinkowych jest włączony z /fp:precise:

    • Włączono tomorrow lub zastąpienie wielu operacji z jednej operacji złożony z tylko jednym zaokrąglania na koniec, z /fp:precise.

    • Optymalizacje wyrażenie, które są nieprawidłowe dla specjalnych wartości (NaN, nieskończoności, - infinity + 0, 0) nie będą dozwolone.Optymalizacje x-x => 0, x*0 => 0, x-0 => x, x+0 => x, i 0-x => -x są wszystkie nieprawidłowe różnych powodów (zobacz IEEE 754 i C99 standard).

    • Kompilator będzie prawidłowo obsłużyć porównań, obejmujących NaN.Na przykład x != x wynikiem true Jeśli x jest NaN i Zamówione porównań, obejmujących NaN wzbudzenie wyjątku.

    • Obliczanie wyrażenia są zgodne z C99 FLT_EVAL_METHOD = 2, z wyjątkiem jednego.Podczas programowania dla architektury x 86 procesorów, ponieważ FPU jest ustawiona na dokładność 53-bitowe, uznaje się to długo podwójnej precyzji.

    • Mnożenie przez dokładnie 1.0 przekształcone do użytku innych czynników.x*y*1.0jest przekształcany w x*y.Podobnie x*1.0*y jest przekształcany w x*y.

    • Dzielenie przez dokładnie 1.0 jest przekształcane na wykorzystanie dywidendy.x*y/1.0jest przekształcany w x*y.Podobnie x/1.0*y jest przekształcany w x*y.

    Za pomocą /fp:precise z fenv_access ON wyłącza niektóre optymalizacje, takich jak ocen kompilacji przestawne określeń punktu.Na przykład zmienić tryb zaokrąglania z _control87, _controlfp, __control87_2i kompilator wykonuje obliczeń zmiennoprzecinkowych, zaokrąglania tryb określono będą obowiązywały, chyba że fenv_access jest włączone.

    /fp:precisezastępuje /Op opcję kompilatora.

  • fast
    Tworzy kod najszybsze w większości przypadków./fp:fastnie można używać z /fp:strict lub /fp:precise, Ostatnia opcja określonego w wierszu polecenia, które będą używane./fp:fasti /fp:except wygeneruje błąd kompilatora.

    Zaznaczanie / Za, /Ze (język wyłączyć rozszerzenia) (ANSI kompatybilności) i /fp:fast może spowodować nieoczekiwane zachowanie.Na przykład pojedynczej precyzji operacji zmiennoprzecinkowych nie może zostać zaokrąglona do pojedynczej precyzji.

  • except[-]
    Model wiarygodne wyjątek zmiennoprzecinkowych.Wyjątki zostaną podniesione, natychmiast po ich wygenerowaniu.Ta opcja jest domyślnie wyłączona.Jawnie dołączane znak minus opcja wyłącza.

  • strict
    Najsurowsze model liczb zmiennoprzecinkowych./fp:strictpowoduje, że fp_contract być wyłączona i fenv_access się na./fp:exceptjest implikowana i może zostać wyłączony, jawnie określając /fp:except-.Gdy używana z /fp:except-, /fp:strict wymusza ścisłe semantykę zmiennoprzecinkowych, ale bez poszanowania wyjątkowe zdarzenia.

Uwagi

Wiele /fp opcje mogą być określone w tym samym kompilacji.

W celu sterowania zachowaniem zmiennoprzecinkowe przy użyciu funkcji, zobacz float_control pragma.

Większość zmiennoprzecinkowych optymalizacje związane z /fp:strict, /fp:except (i jego odpowiednie pragmas), i fp_contract pragma jest zależny od komputera./fp:stricti /fp:except nie są zgodne z /clr.

/fp:precisepowinny dotyczyć większości zmiennoprzecinkowych wymagań aplikacji.Jeśli to konieczne, można użyć /fp:except i /fp:strict, ale mogą być pewne zmniejszenie wydajności.Jeśli wydajność jest najważniejszym, można użyć /fp:fast.

/fp:strict, /fp:fast, i /fp:precise są tryby precyzji (poprawność).Tylko jedna może być obowiązujące w czasie.Jeśli /fp:strict i /fp:precise są określone, kompilator używać ten, który przetwarza ostatnio.Nie można określić zarówno /fp:strict i /fp:fast.

Aby uzyskać więcej informacji, zobacz https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/floapoint.asp.

Aby ustawić tę opcję kompilatora w środowisku projektowym programu Visual Studio

  1. Otwórz projekt Stron właściwości okno dialogowe.Aby uzyskać szczegółowe informacje, zobacz Jak: Otwórz strony właściwości projektu.

  2. Rozwiń węzeł Właściwości konfiguracji węzła.

  3. Rozwiń węzeł C i C++ węzła.

  4. Wybierz Generowanie kodu stronę właściwości.

  5. Modyfikowanie Przestawne modelu punkt właściwości.

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Informacje

Opcje kompilatora

Ustawianie opcji kompilatora