zoujiaqing@BRIAN-LAPTOP:~/projects/cpp11_muduo/build$ make
[ 25%] Built target async_logging
[ 28%] Building CXX object CMakeFiles/muduo_server.dir/sources/muduo_network/EventLoopThreadPool.cpp.o
In file included from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:6,
from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘void myself::ptr_vector<T>::push_back(T* const&)’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
45 | ASSERT(v , "NULL point at ptr_vector push_back()");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:7:1: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
6 | #include <assert.h>
+++ |+#include <cstdio>
7 |
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
45 | ASSERT(v , "NULL point at ptr_vector push_back()");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
45 | ASSERT(v , "NULL point at ptr_vector push_back()");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
45 | ASSERT(v , "NULL point at ptr_vector push_back()");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘std::unique_ptr<T> myself::ptr_vector<T>::pop_back()’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
52 | ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
52 | ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
52 | ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
52 | ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘T*& myself::ptr_vector<T>::operator[](myself::ptr_vector<T>::size_type)’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
59 | ASSERT(n < size(), "operator[] n out of the border")
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
59 | ASSERT(n < size(), "operator[] n out of the border")
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
59 | ASSERT(n < size(), "operator[] n out of the border")
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
59 | ASSERT(n < size(), "operator[] n out of the border")
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘void myself::ptr_vector<T>::resize(myself::ptr_vector<T>::size_type)’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
92 | ASSERT(s == this->size(), "'resize' error size asymmetry");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
92 | ASSERT(s == this->size(), "'resize' error size asymmetry");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
92 | ASSERT(s == this->size(), "'resize' error size asymmetry");
| ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
92 | ASSERT(s == this->size(), "'resize' error size asymmetry");
| ^~~~~~
In file included from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp: At global scope:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:42:15: error: field ‘m_name’ has incomplete type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’}
42 | std::string m_name;
| ^~~~~~
In file included from /usr/include/c++/10/iosfwd:39,
from /usr/include/c++/10/memory:74,
from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:5,
from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:6,
from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/usr/include/c++/10/bits/stringfwd.h:74:11: note: declaration of ‘std::string’ {aka ‘class std::__cxx11::basic_string<char>’}
74 | class basic_string;
| ^~~~~~~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp: In member function ‘void muduo::EventLoopThreadPool::start()’:
/home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:42:14: error: ‘buf’ was not declared in this scope
42 | snprintf(buf, sizeof buf, "%s%d", m_name.c_str(), i);
| ^~~
In file included from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:6,
from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In instantiation of ‘void myself::ptr_vector<T>::push_back(T* const&) [with T = muduo::EventLoopThread]’:
/home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:44:26: required from here
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:10: error: ‘fprintf’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
13 | fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
45 | ASSERT(v , "NULL point at ptr_vector push_back()");
| ^~~~~~
In file included from /usr/include/c++/10/cstdio:42,
from /usr/include/c++/10/ext/string_conversions.h:43,
from /usr/include/c++/10/bits/basic_string.h:6545,
from /usr/include/c++/10/string:55,
from /usr/include/c++/10/stdexcept:39,
from /usr/include/c++/10/system_error:41,
from /usr/include/c++/10/mutex:42,
from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoop.hpp:7,
from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:10:
/usr/include/stdio.h:326:12: note: ‘int fprintf(FILE*, const char*, ...)’ declared here, later in the translation unit
326 | extern int fprintf (FILE *__restrict __stream,
| ^~~~~~~
make[2]: *** [CMakeFiles/muduo_server.dir/build.make:173: CMakeFiles/muduo_server.dir/sources/muduo_network/EventLoopThreadPool.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:147: CMakeFiles/muduo_server.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
目前会报错,毕竟编译器这些年在升级,C++ 兼容性一直不太好,会报下面的错误: