0

このトピックcppreferenceで提案されているように、標準ライブラリを使用して浮動小数点の丸めモードを変更したいと考えています。環境としてMingGWを使用しています。プロジェクトのビルドには CMake を使用します。私のコード:

main.cpp:

#include <stdio.h>
#include <math.h>
#include <fenv.h>

#pragma STDC FENV_ACCESS ON
void show_fe_current_rounding_method(void)
{
    printf("current rounding method:  ");
    switch (fegetround()) {
           case FE_TONEAREST:  printf ("FE_TONEAREST");  break;
           case FE_DOWNWARD:   printf ("FE_DOWNWARD");   break;
           case FE_UPWARD:     printf ("FE_UPWARD");     break;
           case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break;
           default:            printf ("unknown");
    };
    printf("\n");
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(test)

SET(GCC_COVERAGE_COMPILE_FLAGS "-std=c++11 -march=native -mavx")
SET(CMAKE_CXX_FLAGS "${GCC_COVERAGE_COMPILE_FLAGS}")

ただし、コンパイル中に次のエラーが発生します。

error: 'fegetround' was not declared in this scope...
error: 'FE_TONEAREST' was not declared in this scope..
error: 'FE_DOWNWARD' was not declared in this scope...
error: 'FE_UPWARD' was not declared in this scope...
error: 'FE_TOWARDZERO' was not declared in this scope...

それは私のコードでは利用できないコンテンツ<fenv.h>です(の条件#if _GLIBCXX_USE_C99_FENV_TR1が満たされ\MinGW\lib\gcc\mingw32\4.8.1\include\c++\fenv.hていません)。私は何を間違っていますか?

4

0 に答える 0