Ostatnio zmodyfikowano wczoraj o godz. 17:06
nanoant20 Temat założony przez niniejszego użytkownika |
czy kompilator może dołączyć nagłówki lub funkcje w sposób ukryty? » 2025-04-26 21:03:59 Czy mogą występować różnice w sposobie, w jaki kompilatory (MSVC vs. GCC) traktują błędy i ostrzeżenia ? moje środowisko: Windows 10 64bit g++ --version g++ (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders, r3) 14.2.0 SFML-2.6.2 CMake 4.0 cmake_minimum_required(VERSION 3.31) utworzyłem CMakeLists.txt, żeby zbudować programy napisane przez user: tBane https://github.com/tBane1995 zacznijmy od tego: Open-Dialog-Box-main w pliku main.cpp nie dołącza #include <cmath> ale w headers w pliku Scrollbar.hpp używa fabs: if( fabs( mousePos.x - mouseStartPos.x ) > 100 ) przy budowaniu projektu wyskoczył error zbudowałem go dodając bibliotekę cmath w pliku main.cpp drugi projekt "Editor-RPG2D-main" staram się go zbudować, a tu ,np. /Map.hpp:602:36: error: no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::wstring&)' 602 | std::ofstream file(filename);
mógłbym zacząć poprawiać i użyć std::wofstream, ale nie o to mi chodzi. kompilator MSVC zapewnia dobry poziom diagnostyki, więc czy możliwe jest, że kompilator nie ma domyślnie włączonego odpowiedniego poziomu ostrzeżeń? a może tBane pisze exploita :D |
|
tBane |
» 2025-04-26 21:28:42 U mnie działa :D 1) nie ma sensu odpalać Open Dialog Box, bo w Edytorze RPG2D jest ulepszona wersja w pliku FileDialog.hpp (już usunąłem to repo) 2) zmień po prostu std::wstring filename na std::string filename lub użyj std::wofstream |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2025-04-26 21:47:30 domyślam się że u Ciebie działa, ale tam nie ma 1 error'u czy warning'u ale cała litania. Czy w swoim projekcie VS2022 nie masz włączonych odpowiednich poziomów ostrzeżeń kompilatora, które mogą zgłaszać ten typ problemu ? Czy może wyłączyłeś ? |
|
tBane |
» 2025-04-26 21:51:32 U mnie się buduje bez problemu w Visual Studio 2022 std:C++20. Pokaż jakie błędy wykryło to zaraz to poprawię. Dużo jest tych błędów? |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2025-04-26 22:13:15 takich warning'ów które kompilator sygnalizuje, że próbujesz przekazać argument niezgodny z oczekiwanym typem jest dużo, proszę tylko ich część: EditorRPG2D\headers/Map.hpp: In member function 'void Mapa::save(std::wstring)': EditorRPG2D\headers/Map.hpp:602:36: error: no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::wstring&)' 602 | std::ofstream file(filename); | ^ In file included from EditorRPG2D\main.cpp:5: C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:891:9: note: candidate: 'template<class _Path, class _Require> std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const _Path&, std::ios_base::openmode) [with _Require = _Path; _CharT = char; _Traits = std::char_traits<char>]' 891 | basic_ofstream(const _Path& __s, | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:891:9: note: template argument deduction/substitution failed: C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:64:60: error: 'class std::__cxx11::basic_string<wchar_t>' has no member named 'make_preferred' 64 | = decltype(std::declval<_Path&>().make_preferred().filename())> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:899:7: note: candidate: 'std::basic_ofstream<_CharT, _Traits>::basic_ofstream(std::basic_ofstream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits<char>]' 899 | basic_ofstream(basic_ofstream&& __rhs) | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:899:39: note: no known conversion for argument 1 from 'std::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'std::basic_ofstream<char>&&' 899 | basic_ofstream(basic_ofstream&& __rhs) | ~~~~~~~~~~~~~~~~~^~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:874:7: note: candidate: 'std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const std::string&, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::string = std::__cxx11::basic_string<char>; std::ios_base::openmode = std::ios_base::openmode]' 874 | basic_ofstream(const std::string& __s, | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:874:41: note: no known conversion for argument 1 from 'std::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const std::string&' {aka 'const std::__cxx11::basic_string<char>&'} 874 | basic_ofstream(const std::string& __s, | ~~~~~~~~~~~~~~~~~~~^~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:856:7: note: candidate: 'std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const wchar_t*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::ios_base::openmode]' 856 | basic_ofstream(const wchar_t* __s, | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:856:37: note: no known conversion for argument 1 from 'std::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const wchar_t*' 856 | basic_ofstream(const wchar_t* __s, | ~~~~~~~~~~~~~~~^~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:839:7: note: candidate: 'std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::ios_base::openmode]' 839 | basic_ofstream(const char* __s, | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:839:34: note: no known conversion for argument 1 from 'std::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const char*' 839 | basic_ofstream(const char* __s, | ~~~~~~~~~~~~^~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:828:7: note: candidate: 'std::basic_ofstream<_CharT, _Traits>::basic_ofstream() [with _CharT = char; _Traits = std::char_traits<char>]' 828 | basic_ofstream(): __ostream_type(), _M_filebuf() | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:828:7: note: candidate expects 0 arguments, 1 provided EditorRPG2D\headers/Map.hpp: In member function 'void Mapa::load(std::wstring)': EditorRPG2D\headers/Map.hpp:795:36: error: no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::wstring&)' 795 | std::ifstream file(filename); | ^ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:619:9: note: candidate: 'template<class _Path, class _Require> std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const _Path&, std::ios_base::openmode) [with _Require = _Path; _CharT = char; _Traits = std::char_traits<char>]' 619 | basic_ifstream(const _Path& __s, | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:619:9: note: template argument deduction/substitution failed: C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:64:60: error: 'class std::__cxx11::basic_string<wchar_t>' has no member named 'make_preferred' 64 | = decltype(std::declval<_Path&>().make_preferred().filename())> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:627:7: note: candidate: 'std::basic_ifstream<_CharT, _Traits>::basic_ifstream(std::basic_ifstream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits<char>]' 627 | basic_ifstream(basic_ifstream&& __rhs) | ^~~~~~~~~~~~~~ C:/CodeBlocks/MinGW/include/c++/14.2.0/fstream:627:39: note: no known conversion for argument 1 from 'std::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'std::basic_ifstream<char>&&' 627 | basic_ifstream(basic_ifstream&& __rhs)
Map.hpp:795:36: error: no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::wstring&)' 795 | std::ifstream file(filename);
/CodeBlocks/MinGW/include/c++/14.2.0/fstream:64:60: error: 'class std::__cxx11::basic_string<wchar_t>' has no member named 'make_preferred' 64 | = decltype(std::declval<_Path&>().make_preferred().filename())>
itd...
i pozostaje pytanie, czy wyłączyłeś w VS ostrzeżenia? może sprawdź jaki masz Warning Level ? Jeżeli projekt jest tylko pod VS to może nie ma się czym przejmować. Chociaż dalej mnie interesuje jak przeszedł Ci ten fabs bez biblioteki cmath |
|
tBane |
» 2025-04-26 22:21:01 Nie, nie wyłączałem warningów. Spróbuję zaraz poprawić kod. A spróbuj uruchomić w Visual Studio. Zaraz zobaczę. |
|
tBane |
» 2025-04-26 22:24:44 Warning Level mam na poziome "Level3 (/W3)"
Czasem mi błędy wyskakują w Error List to klikam ppm na okno z kodem, wybieram "Rescan" i "Clear Browing Database Errors" i błędy w Error List znikają. A projekt i tak się kompiluje i uruchamia. |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2025-04-26 22:29:22 nie mam zainstalowanego Visual Studio, i dlatego założyłem temat "czy kompilator może dołączyć nagłówki lub funkcje w sposób ukryty?" ponieważ ten przypadek z fabs był bardzo ciekawy, że Ci kompilator skompilował bez dołączonej biblioteki cmaths. p.s. @tBane Nie musisz poprawiać kodu, jak będę go chciał uruchomić to sobie go poprawie.
|
|
« 1 » 2 |