cpuex2021-1 / simulator

0 stars 0 forks source link

ビルドエラー #5

Closed kamahori closed 2 years ago

kamahori commented 2 years ago
% make
make -C asm
g++ -Wall -std=c++17 -O3 -o assembler Parse.cpp Instructions.cpp main.cpp
make -C sim
g++ -O3 -Wall -o simulator  ../asm/Instructions.cpp ../asm/Parse.cpp *.cpp
In file included from ../asm/Instructions.cpp:1:
../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.cpp:58:27: error: non-aggregate type 'map<std::__1::string, unsigned int>' (aka
      'map<basic_string<char, char_traits<char>, allocator<char> >, unsigned int>') cannot be initialized
      with an initializer list
map<string, unsigned int> regs = {
                          ^      ~
4 warnings and 1 error generated.
In file included from ../asm/Parse.cpp:1:
In file included from ../asm/Parse.hpp:3:
../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
4 warnings generated.
In file included from CPU.cpp:1:
In file included from ./CPU.hpp:2:
In file included from ./Memory.hpp:3:
In file included from ./util.hpp:6:
In file included from ./../asm/Parse.hpp:3:
./../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
CPU.cpp:21:18: error: non-aggregate type 'map<int, std::__1::string>' (aka 'map<int, basic_string<char,
      char_traits<char>, allocator<char> > >') cannot be initialized with an initializer list
map<int, string> xregName = {
                 ^          ~
CPU.cpp:56:18: error: non-aggregate type 'map<int, std::__1::string>' (aka 'map<int, basic_string<char,
      char_traits<char>, allocator<char> > >') cannot be initialized with an initializer list
map<int, string> fregName = {
                 ^          ~
4 warnings and 2 errors generated.
In file included from Memory.cpp:1:
In file included from ./Memory.hpp:3:
In file included from ./util.hpp:6:
In file included from ./../asm/Parse.hpp:3:
./../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
4 warnings generated.
In file included from Simulator.cpp:1:
In file included from ./Simulator.hpp:6:
In file included from ./CPU.hpp:2:
In file included from ./Memory.hpp:3:
In file included from ./util.hpp:6:
In file included from ./../asm/Parse.hpp:3:
./../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
4 warnings generated.
In file included from main.cpp:6:
In file included from ./Simulator.hpp:6:
In file included from ./CPU.hpp:2:
In file included from ./Memory.hpp:3:
In file included from ./util.hpp:6:
In file included from ./../asm/Parse.hpp:3:
./../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
4 warnings generated.
In file included from util.cpp:1:
In file included from ./util.hpp:6:
In file included from ./../asm/Parse.hpp:3:
./../asm/Instructions.hpp:25:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:39:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:53:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
./../asm/Instructions.hpp:65:29: warning: 'override' keyword is a C++11 extension [-Wc++11-extensions]
    unsigned int assemble() override;
                            ^
util.cpp:81:16: error: non-aggregate type 'vector<std::__1::string>' (aka 'vector<basic_string<char,
      char_traits<char>, allocator<char> > >') cannot be initialized with an initializer list
vector<string> faces = {
               ^       ~
4 warnings and 1 error generated.
make[1]: *** [simulator] Error 1
make: *** [all] Error 2
ataga101 commented 2 years ago

~これ、多分Clangだとmapの初期化の表記が違うみたいな問題ですかね ちょっと直すのに時間かかるかもです~

ataga101 commented 2 years ago

https://marycore.jp/prog/xcode/non-aggregate-type-cannot-be-initialized-with-an-initializer/ 古いC++だとダメみたいな話かも いまmain branchに上がってる-std=c++17つけたバージョンで試してみるといけるかも

kamahori commented 2 years ago

コンパイルできた。ありがとう!