在我的程序中,我使用std :: mt19937生成随机数。在两个系统(最新的Windows和ubuntu)上,程序编译得很好。但是,在第三个未知系统(使用make)上,我收到错误消息: " ' mt19937'不是' std'的成员"
我假设makefile没有正确写入。我是makefiles的新手,不知道从哪里开始。我需要强制执行c ++ 11吗?我该怎么做?
all:
%.o: %.cc
g++ -c -O2 -Wall -Wextra -pedantic $<
library-objects = \
BigUnsigned.o \
BigInteger.o \
BigIntegerAlgorithms.o \
BigUnsignedInABase.o \
BigIntegerUtils.o \
library-headers = \
NumberlikeArray.hh \
BigUnsigned.hh \
BigInteger.hh \
BigIntegerAlgorithms.hh \
BigUnsignedInABase.hh \
BigIntegerLibrary.hh \
library: $(library-objects)
$(library-objects): $(library-headers)
# Components of the program.
program = rsa435
program-objects = rsa435.o
$(program-objects) : $(library-headers)
$(program) : $(program-objects) $(library-objects)
g++ $^ -o $@
clean :
rm -f $(library-objects) $(testsuite-cleanfiles) $(program-objects) $(program)
all : library $(program)
编辑:可能值得一提的是我有cc文件和cpp文件。也许这也引起了一个问题?
答案 0 :(得分:1)
错误在于它知道&#34; std&#34;命名空间但没有&#34; mt19937&#34;在该命名空间中定义。
添加&#34; -std = c ++ 11&#34;到你的g ++命令行,因为直到C ++ 11才定义mt19937。
(信用:这最初由Richard Critten发布,作为对该问题的评论。)
此外,您可能需要添加此头文件:
#include <random>
答案 1 :(得分:1)
“-std = c ++ 11”还不够,请添加#include<bits/stdc++.h>