I compiled cppcheck2.8 on ubuntu16.04 using "make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"" command encounterd one compiling error, can you please help me out?
In file included from build/programmemory.cpp:186:0:
lib/calculate.h:88:10: warning: multi-character character constant [-Wmultichar]
case '<<':
^
lib/calculate.h:95:10: warning: multi-character character constant [-Wmultichar]
case '>>':
^
lib/calculate.h:102:10: warning: multi-character character constant [-Wmultichar]
case '&&':
^
lib/calculate.h:104:10: warning: multi-character character constant [-Wmultichar]
case '||':
^
lib/calculate.h:106:10: warning: multi-character character constant [-Wmultichar]
case '==':
^
lib/calculate.h:108:10: warning: multi-character character constant [-Wmultichar]
case '!=':
^
lib/calculate.h:110:10: warning: multi-character character constant [-Wmultichar]
case '>=':
^
lib/calculate.h:112:10: warning: multi-character character constant [-Wmultichar]
case '<=':
^
lib/calculate.h:114:10: warning: multi-character character constant [-Wmultichar]
case '<=>':
^
build/programmemory.cpp: In function ‘ValueFlow::Value evaluateLibraryFunction(const std::unordered_map<int, valueflow::value="">&, const string&, const Settings)’:
build/programmemory.cpp:991:18: error: converting to ‘std::unordered_map<std::basic_string\<char>, std::function\<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)> >’ from initializer list would use explicit constructor ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::size_type, const hasher&, const key_equal&, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = std::function<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)>; _Hash = std::hash<std::basic_string\<char> >; _Pred = std::equal_to<std::basic_string\<char> >; _Alloc = std::allocator<std::pair\<const std::basic_string\<char="">, std::function\<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)> > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::size_type = long unsigned int; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hasher = std::hash<std::basic_string\<char> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::key_equal = std::equal_to<std::basic_string\<char> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::allocator_type = std::allocator<std::pair\<const std::basic_string\<char="">, std::function\<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)> > >]</valueflow::value(const></std::pair\<const></std::basic_string\<char></std::basic_string\<char></valueflow::value(const></std::pair\<const></std::basic_string\<char></std::basic_string\<char></valueflow::value(const></char>’
functions = {};
^
make: </valueflow::value(const></std::basic_string\<char>** [build/programmemory.o] Error 1</int,>
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello Daniel Marjamäki,
I compiled cppcheck2.8 on ubuntu16.04 using "make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"" command encounterd one compiling error, can you please help me out?
In file included from build/programmemory.cpp:186:0:
lib/calculate.h:88:10: warning: multi-character character constant [-Wmultichar]
case '<<':
^
lib/calculate.h:95:10: warning: multi-character character constant [-Wmultichar]
case '>>':
^
lib/calculate.h:102:10: warning: multi-character character constant [-Wmultichar]
case '&&':
^
lib/calculate.h:104:10: warning: multi-character character constant [-Wmultichar]
case '||':
^
lib/calculate.h:106:10: warning: multi-character character constant [-Wmultichar]
case '==':
^
lib/calculate.h:108:10: warning: multi-character character constant [-Wmultichar]
case '!=':
^
lib/calculate.h:110:10: warning: multi-character character constant [-Wmultichar]
case '>=':
^
lib/calculate.h:112:10: warning: multi-character character constant [-Wmultichar]
case '<=':
^
lib/calculate.h:114:10: warning: multi-character character constant [-Wmultichar]
case '<=>':
^
build/programmemory.cpp: In function ‘ValueFlow::Value evaluateLibraryFunction(const std::unordered_map<int, valueflow::value="">&, const string&, const Settings)’:
build/programmemory.cpp:991:18: error: converting to ‘std::unordered_map<std::basic_string\<char>, std::function\<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)> >’ from initializer list would use explicit constructor ‘std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::size_type, const hasher&, const key_equal&, const allocator_type&) [with _Key = std::basic_string<char>; _Tp = std::function<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)>; _Hash = std::hash<std::basic_string\<char> >; _Pred = std::equal_to<std::basic_string\<char> >; _Alloc = std::allocator<std::pair\<const std::basic_string\<char="">, std::function\<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)> > >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::size_type = long unsigned int; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::hasher = std::hash<std::basic_string\<char> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::key_equal = std::equal_to<std::basic_string\<char> >; std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::allocator_type = std::allocator<std::pair\<const std::basic_string\<char="">, std::function\<valueflow::value(const std::unordered_map\<int,="" valueflow::value="">&)> > >]</valueflow::value(const></std::pair\<const></std::basic_string\<char></std::basic_string\<char></valueflow::value(const></std::pair\<const></std::basic_string\<char></std::basic_string\<char></valueflow::value(const></char>’
functions = {};
^
make: </valueflow::value(const></std::basic_string\<char>** [build/programmemory.o] Error 1</int,>
Unfortunately I can't reproduce. I tried with ubuntu 16.04 in a docker container.
but well does it compile properly if you change the code:
to: