電子書籍の厳選無料作品が豊富!

こんにちは

とあるプログラムをmakeすると,以下のようなエラーが出ます.

/usr/include/c++/7/bits/cpp_type_traits.h:205:12: エラー: ‘struct std::__is_integer<int>’ が再定義されてい ます
struct __is_integer<int>
^~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/cpp_type_traits.h:138:12: 備考: previous definition of ‘struct std::__is_integer<int>’
struct __is_integer<bool>

cpp_type_traits.hはデフォルトで入っていたものですが,何故エラーが出るのでしょうか?また,どうすれば解決できるのですか?
よろしくお願いします.

質問者からの補足コメント

  • つらい・・・

    コンパイラはg++ (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)です.

      補足日時:2018/02/08 16:04

A 回答 (2件)

その「とあるプログラム」とやらが何なのか全く分からないので完全に妄想で書きますが, 「とあるプログラム」のどこかで bool を int に #define している (つまり


#define bool int
という行がどこかにある) ような気がします.
    • good
    • 0
この回答へのお礼

ありがとうございます!
ヘッダファイルを確認すると,
#define bool int
とあり,コメントアウトしてみるとコンパイルできました!

お礼日時:2018/02/08 18:13

struct __is_integer


という名前の構造体がどこかで被っているからです。
プログラム内の
#include <cpp_type_traits.h>
文よりも前で定義、もしくは前に #include したヘッダーファイル内で定義されているものと思われます。
テキストエディタなどで検索してみましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!