2017-05-09 12 views
0

アプリケーションの1つをコンパイルするときに、BeastとBoostの2つのフレームワークを使用しています。 Beastで使用されるいくつかのBoostコードでは、初期化されていない変数があると考えられるため、g ++によって警告が生成されます。しかし、 "-isystem"フラグを使ってboostとbeastを追加します。これにより、警告が表示されなくなりますが、警告は表示されません。なぜどんなアイデア?-isystemにもかかわらず警告が生成される

以下に、匿名でコンパイルコマンドとその出力を見ることができます。

/home/user/code/thirdparty/supplier/6.0/sysroots/x86_64-suppliersdk-linux/usr/bin/arm-supplier-linux-gnueabi/arm-supplier-linux-gnueabi-g++ --sysroot=/home/user/code/thirdparty/supplier/6.0/sysroots/armv7a-neon-supplier-linux-gnueabi -DBOOST_ASIO_DISABLE_EPOLL=1 -DEIGEN_MPL2_ONLY -DUSE_LOG -DLOG_THROUGH_SERVERSERVICE=1 -DARM -DNDEBUG -DAPP_TYPE_IS_PT -DOSIRIS_RELEASE_NUMBER=\"0.0\" -DLOGCONFIGFILE=\"app1_dev.log4\" -DCONFIGFILE=\"app1_native.cfg\" -DCONFIGFILE=\"app1_native.cfg\" -DLOGCONFIGFILE=\"app1_dev.log4\" -pthread -std=c++11 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O2 -ftree-vectorize -ffast-math -Wall -Wextra -Wno-unused-parameter -Wcast-align -Wuninitialized -Wmissing-include-dirs -Wpedantic -I binaryprotocol/include -I common/include -I config/include -I connectivity/include -I core/include -I socketserver/include -isystem /home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include -isystem /home/user/code/thirdparty/log4cplus/1.2.0/arm/b993705d/include -isystem /home/user/code/thirdparty/openssl/1.0.2j/arm/b993705d/include -isystem ../external/common/modernjson -isystem ../external/common/pstreams -isystem ../external/common/beast/include -MD -MF ../osiris-obj/arm/b993705d/mains/app1/TLSWSClient.d -c mains/app1/TLSWSClient.cpp -o ../osiris-obj/arm/b993705d/mains/app1/TLSWSClient.o 
In copy constructor ~boost::asio::detail::consuming_buffers<Buffer, Buffers>::consuming_buffers(const boost::asio::detail::consuming_buffers<Buffer, Buffers>&) [with Buffer = boost::asio::const_buffer; Buffers = beast::detail::buffer_cat_helper<beast::http::detail::chunk_encode_delim, boost::asio::null_buffers, boost::asio::const_buffers_1>]~: 
cc1plus: warning: ~*((void*)& second +8)~ may be used uninitialized in this function [-Wmaybe-uninitialized] 
In file included from /home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include/boost/asio/impl/write.hpp:23:0, 
       from /home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include/boost/asio/write.hpp:618, 
       from /home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include/boost/asio/buffered_write_stream.hpp:29, 
       from /home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include/boost/asio/buffered_stream.hpp:22, 
       from /home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include/boost/asio.hpp:38, 
       from ../external/common/beast/include/beast/websocket/stream.hpp:18, 
       from ../external/common/beast/include/beast/websocket.hpp:14, 
       from mains/app1/TLSWSClient.h:13, 
       from mains/app1/TLSWSClient.cpp:11: 
/home/user/code/thirdparty/boost/1.64.0/arm/b993705d/include/boost/asio/detail/consuming_buffers.hpp:191:38: note: ~*((void*)& second +8)~ was declared here 
    typename Buffers::const_iterator second = other.begin_remainder_; 

Ubuntu 16.04を実行しています。 g ++はサプライヤによって提供され、そのバージョンは以下の通りです。

/home/user/code/thirdparty/supplier/6.0/sysroots/x86_64-suppliersdk-linux/usr/bin/arm-supplier-linux-gnueabi/arm-supplier-linux-gnueabi-g++ --version 
arm-supplier-linux-gnueabi-g++ (GCC) 5.3.0 

答えて

0

「-i」は、必ずしもすべての警告を防止するとは限りません。 gccが「おそらく初期化されていない可能性があります」という誤検出を引き起こす期間がありました。これはその時のように見えます。

+0

ありがとうございます。ありがとう! GCCの新しいバージョンをインストールすることでこれを確認することはできませんが、これを正解とマークします。 – raahlb

関連する問題