-उत्पादन फ़ाइल नाम बदलता है (मैंने पाया है कि --help का उपयोग करके)
लेकिन मुझे पता नहीं चला कि क्या -Wall
होता है?
-उत्पादन फ़ाइल नाम बदलता है (मैंने पाया है कि --help का उपयोग करके)
लेकिन मुझे पता नहीं चला कि क्या -Wall
होता है?
man
कार्यक्रमों के लिए प्रविष्टियों को पढ़ने का प्रयास करें यदि आप जानना चाहते हैं कि स्विच क्या करता है, या क्या स्विच उपलब्ध हैं। के man
पृष्ठ linux.die.net/man/1/gccgcc
पर पढ़ा जा सकता है - आप पाठ के लिए एक त्वरित खोज कर सकते हैं "-Wall"
जवाबों:
यह "सभी को चेतावनी" के लिए छोटा है - यह (लगभग) सभी चेतावनियों को चालू करता है जो जी ++ आपको बता सकते हैं। आमतौर पर एक अच्छा विचार, खासकर यदि आप एक शुरुआत कर रहे हैं, क्योंकि उन चेतावनियों को समझना और ठीक करना आपको अपने कोड में विभिन्न प्रकार की समस्याओं को ठीक करने में मदद कर सकता है।
-Wextra
और -pedantic
।
-Wall -Wextra
, और फिर मैनुअल सोचना कई के रूप में पता लगाने के लिए और अधिक , क्योंकि भले चेतावनी आप जल्द सक्षम हो सकता है -Wextra
केवल एक छोटे सबसेट है ...
-Wunreachable-code
कुछ समय पहले जीसीसी टीम अक्षम नहीं होती , तो Apple इन दिनों बहुत खुश होता । ;-)
आदमी जीसीसी देखें।
-Wall इन चेतावनियों पर बदल जाता है:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and
Objective-C only) -Wimplicit-function-declaration (C and Objective-C only)
-Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding)
-Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing
-Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas
-Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
-विकास में शामिल हैं:
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
कई और चेतावनियाँ हैं जिन्हें आपको स्पष्ट रूप से चालू करना होगा।
हमारे सी कोड के लिए हम उपयोग करते हैं:
-वेल -वैक्रा -वॅगेट-रिटर्न -वॉक-अलाइन -वोक-क्वॉल -Wdisabled-ऑप्टिमाइजेशन -वडि-बाय-शून्य -वेंडिफ-लेबल्स -Wimport -Winit-self -Winline -Winvalid-pch -Wjump-misses-in -Wlogical-op -Werror = लापता-ब्रेसिज़ -विस्मरण-घोषणाएँ -पॉइंट्टर-एरीथ -compat -Werror = घोषणा-पश्चात कथन
या सिर्फ https://www.gnu.org/software/autoconf-archive/ax_compiler_flow.html के साथ चेतावनी का सेट
अफसोस की बात है कि कोई भी उत्तर पुस्तिका के वास्तव में प्रासंगिक हिस्से को उद्धृत नहीं करता है, जो वास्तव में इसे एक बिंदु पर लाता है:
यह उन निर्माणों के बारे में सभी चेतावनियों को सक्षम करता है जिन्हें कुछ उपयोगकर्ता संदिग्ध मानते हैं, और जो मैक्रोज़ के साथ मिलकर भी (या चेतावनी को रोकने के लिए) संशोधित करने से बचना आसान है।
[...]
ध्यान दें कि कुछ चेतावनी झंडे द्वारा निहित नहीं हैं
-Wall
। उनमें से कुछ निर्माणों के बारे में चेतावनी देते हैं कि उपयोगकर्ता आमतौर पर संदिग्ध नहीं मानते हैं, लेकिन जो कभी-कभी आप जांचना चाहते हैं; अन्य लोग ऐसे निर्माणों के बारे में चेतावनी देते हैं जो कुछ मामलों में बचने के लिए आवश्यक या कठिन हैं, और चेतावनी को दबाने के लिए कोड को संशोधित करने का कोई सरल तरीका नहीं है। उनमें से कुछ सक्षम हैं,-Wextra
लेकिन उनमें से कई को व्यक्तिगत रूप से सक्षम किया जाना चाहिए।
Ergo:
-Wall
करता नहीं "सभी चेतावनियों" मतलब है।निचला रेखा, यह आपके द्वारा निर्धारित की गई न्यूनतम चेतावनी के बारे में है। जबकि -Wall -Wextra
यह बेहतर है, यह अभी भी सभी त्रुटि का उपयोग नहीं कर रहा है जो आपके संकलक की जांच आपके लिए कर सकता है।
व्यक्तिगत रूप से मैं इससे कम के लिए नहीं जाऊंगा -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
। मेरी सभी वर्तमान परियोजनाएं वास्तव में चेतावनी की एक सूची का उपयोग करती हैं जो इससे कहीं अधिक है (उनमें से किसी को भी ट्रिगर किए बिना)। और मैं नए विकल्पों के लिए हर प्रमुख रिलीज पर मैनुअल की जांच करता हूं। संकलक आपका मित्र है। जो भी डायग्नोस्टिक्स आपको उपयोग कर सकता है, उसका उपयोग करें।
-Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
संकलन का उपयोग करने की सलाह देते हैं g++ -std=c++11
? या मुझे इस भाग को छोड़ देना चाहिए और बाद में त्रुटि संदेशों के झंडे का उपयोग करना शुरू कर देना चाहिए? यदि हां, तो मुझे त्रुटि संदेशों के साथ कब शुरू करना चाहिए?
यह चेतावनियों द्वारा स्रोत से बचने के लिए उपयोगी और आसान समझी जाने वाली चेतावनियों को सक्षम बनाता है । वहाँ भी है -W (नए रिलीज में -Wextra) जो उपयोगी समझे जाते हैं लेकिन जिनके लिए काम-आसन्न झूठी सकारात्मकता मुश्किल हो सकती है या अनाड़ी कोड का परिणाम हो सकता है।
gcc में अन्य चेतावनियों का एक समूह भी होता है, जो आमतौर पर कम उपयोगी होते हैं। Http://gcc.gnu.org/oniltocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options देखें
यह सभी चेतावनियों को सक्षम बनाता है। ("वार्निंग ऑल" के रूप में पढ़ता है)
-Wall
"सभी चेतावनियों" के बजाय "अधिकांश चेतावनियों" का अर्थ है।
यह सभी चेतावनियों को दर्शाता है। मैं भी -pedantic
कोड के कुछ गैर-अनुरूप भागों के बारे में चेतावनी देने के लिए उपयोग करने की सलाह दूंगा।