title: Conflict between "zlib.h" header of ZLIB and CryptoPP
body: <p>I use a library in my project which uses ZLIB library for compression. On the other hand I use CryptoPP library in my project. The consequence is that when compiling compiler makes a mistake and loads the zlib.h of CryptoPP instead of ZLIB.</p>
  <p>Here is the compiler error:</p>
  <pre><code>/usr/local/include/crow/compression.h:25:13: error: ‘z_stream’ was not declared in this scope
     25 |             z_stream stream{};
        |             ^~~~
  /usr/local/include/crow/compression.h:27:19: error: ‘::deflateInit2’ has not been declared
     27 |             if (::deflateInit2(&amp;stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, algo, 8, Z_DEFAULT_STRATEGY) == Z_OK)
        |                   ^~~~~~
  /usr/local/include/crow/compression.h:27:33: error: ‘stream’ was not declared in this scope; did you mean ‘std::io_errc::stream’?
     27 |             if (::deflateInit2(&amp;stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, algo, 8, Z_DEFAULT_STRATEGY) == Z_OK)
        |                                 ^~~~
        |                                 std::io_errc:stream
  /usr/local/include/crow/compression.h:27:41: error: ‘Z_DEFAULT_COMPRESSION’ was not declared in this scope; did you mean ‘CROW_ENABLE_COMPRESSION’?
     27 |             if (::deflateInit2(&amp;stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, algo, 8, Z_DEFAULT_STRATEGY) == Z_OK)
        |                                         ^~~~~~~~~
        |                                         CROW_ENABLE_COMPRESSION
  /usr/local/include/crow/compression.h:27:64: error: ‘Z_DEFLATED’ was not declared in this scope; did you mean ‘DEFLATE’?
     27 |             if (::deflateInit2(&amp;stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, algo, 8, Z_DEFAULT_STRATEGY) == Z_OK)
        |                                                                ^~~~
        |                                                                DEFLATE
  [ 78%] Building CXX object _deps/cryptopp-build/CMakeFiles/cryptest.dir/validat2.cpp.o
  /usr/local/include/crow/compression.h:27:85: error: ‘Z_DEFAULT_STRATEGY’ was not declared in this scope
     27 |             if (::deflateInit2(&amp;stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, algo, 8, Z_DEFAULT_STRATEGY) == Z_OK)
        |                                                                                     ^~~~~~~~
  /usr/local/include/crow/compression.h:27:108: error: ‘Z_OK’ was not declared in this scope; did you mean ‘R_OK’?
     27 |             if (::deflateInit2(&amp;stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, algo, 8, Z_DEFAULT_STRATEGY) == Z_OK)
        |                                                                                                            ^~
        |                                                                                                            R_OK
  /usr/local/include/crow/compression.h:33:45: error: ‘Bytef’ does not name a type
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                             ^~~
  /usr/local/include/crow/compression.h:33:50: error: expected ‘&gt;’ before ‘*’ token
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                                  ^
  /usr/local/include/crow/compression.h:33:50: error: expected ‘(’ before ‘*’ token
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                                  ^
        |                                                  (
  /usr/local/include/crow/compression.h:33:51: error: expected primary-expression before ‘&gt;’ token
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                                   ^
  /usr/local/include/crow/compression.h:33:76: error: expected ‘&gt;’ before ‘Bytef’
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                                                            ^~~
  /usr/local/include/crow/compression.h:33:76: error: expected ‘(’ before ‘Bytef’
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                                                            ^~~
        |                                                                            (
  /usr/local/include/crow/compression.h:33:76: error: ‘Bytef’ was not declared in this scope
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |                                                                            ^~~
  /usr/local/include/crow/compression.h:33:82: error: expected primary-expression before ‘&gt;’ token
     33 |                 stream.next_in = const_cast&lt;Bytef*&gt;(reinterpret_cast&lt;const Bytef*&gt;(str.c_str()));
        |              
  </code></pre>
  <p>It's just a part of errors. The rest is like above.</p>
  <p>ZLIB, CryptoPP and the third party library are all installed on my ubuntu linux. The compiler is gcc 11.1.0.</p>
  <p>What's your idea about this problem? How to address this issue?</p>