Per un semplice file proto:Esistono modi migliori per indirizzare gli avvisi durante la compilazione del file sorgente generato dal buffer del protocollo?
message Person { required int32 id = 1; required string name = 2; optional string email = 3; }
E 'stato compilato da protoc.exe ed i risultati vengono utilizzati in un progetto di test anche semplice, che non fa praticamente nulla, ma tra cui il ProtoC file generati.
Sto utilizzando la msvc10 per costruire il progetto di test (x64), poi mi ha dato un sacco di avvertimento:
Warning 1 warning C4244: 'return' : conversion from '__int64' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\descriptor.h 1441 1 testProtobuf ... Warning 11 warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\unknown_field_set.h 142 1 testProtobuf Warning 12 warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\unknown_field_set.h 237 1 testProtobuf ... Warning 14 warning C4244: '=' : conversion from '__int64' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\io\coded_stream.h 902 1 testProtobuf Warning 15 warning C4244: 'return' : conversion from '__int64' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\io\coded_stream.h 1078 1 testProtobuf Warning 16 warning C4267: 'argument' : conversion from 'size_t' to 'google::protobuf::uint32', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\wire_format_lite_inl.h 663 1 testProtobuf ... Warning 19 warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\wire_format_lite_inl.h 739 1 testProtobuf Warning 20 warning C4267: 'argument' : conversion from 'size_t' to 'google::protobuf::uint32', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\wire_format_lite_inl.h 742 1 testProtobuf Warning 21 warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data D:\Work\protobuf-trunk\src\google\protobuf\wire_format_lite_inl.h 743 1 testProtobuf Warning 22 warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data D:\Work\testProtobuf\testProtobuf\person.pb.cc 211 1 testProtobuf ... Warning 28 warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility 2239 1 testProtobuf Warning 29 warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility 2239 1 testProtobuf
C'è un buon modo per affrontare tutti questi avvertimento? Qualsiasi suggerimento sarà molto apprezzato.
ps. il progetto libprotobuf stesso può essere pulito compilato da msvc10 senza alcun avviso.
[modifica 2013/02/20]
soluzione di lavoro: proprietà
- set per coloro ProtoC generati .cc file: proprietà
configurazione -> C/C++ -> Avanzate - > disabilita avvertenze specifiche
Dal buffer di protocollo sembra essere un progetto open source si potrebbe risolvere protoc.exe per generare codice migliore. – bames53
Se sei sicuro che gli avvisi non sono un problema, puoi semplicemente spegnerli con '#pragma warning (disable: 4244, 4267, 4996)'. Vedi http://www.dr-bill.net/CSC076/class_summaries/3-26/pragmas.htm – cxxl
@ bames53, eh ... che è un po 'fuori delle mie possibilità, sono solo curioso come questo problema è normalmente affrontato dal momento che il buffer di protocollo è così ampiamente utilizzato e perché non esiste un rilascio ufficiale di upadte sine l'anno scorso. –