2016-09-12 13:58:29 +08:00
..
-------------------------------------------------------------------
NOTE: This file is automatically generated by running clang-tblgen
-gen-diag-docs. Do not edit this file by hand!!
-------------------------------------------------------------------
.. Add custom CSS to output. FIXME: This should be put into <head> rather
than the start of <body>.
.. raw :: html
<style>
table.docutils {
width: 1px;
}
table.docutils td {
border: none;
2016-09-14 10:24:50 +08:00
padding: 0 0 0 0.2em;
2016-09-12 13:58:29 +08:00
vertical-align: middle;
white-space: nowrap;
width: 1px;
2016-09-14 10:24:50 +08:00
font-family: monospace;
2016-09-12 13:58:29 +08:00
}
table.docutils tr + tr {
border-top: 0.2em solid #aaa;
}
.error {
font-family: monospace;
font-weight: bold;
2016-09-13 01:55:49 +08:00
color: #c00;
2016-09-12 13:58:29 +08:00
}
.warning {
font-family: monospace;
font-weight: bold;
2016-09-14 08:35:56 +08:00
color: #80a;
2016-09-12 13:58:29 +08:00
}
.remark {
font-family: monospace;
font-weight: bold;
color: #00c;
}
.diagtext {
font-family: monospace;
font-weight: bold;
}
</style>
2016-09-14 10:24:50 +08:00
.. FIXME: rST doesn't support formatting this, so we format all <td> elements
as monospace font face instead.
2016-09-12 13:58:29 +08:00
.. |nbsp| unicode :: 0xA0
:trim:
.. Roles generated by clang-tblgen.
.. role :: error
.. role :: warning
.. role :: remark
.. role :: diagtext
.. role :: placeholder(emphasis)
=========================
Diagnostic flags in Clang
=========================
.. contents ::
:local:
Introduction
============
This page lists the diagnostic flags currently supported by Clang.
Diagnostic flags
================
-W
--
Synonym for `-Wextra`_ .
-W#pragma-messages
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-W#warnings
-----------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-WCFString-literal
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `input conversion stopped due to an input byte that does not belong to the input codeset UTF-8` |
+------------------------------------------------------------------------------------------------------------------------------------+
-WCL4
-----
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wall`_ , `-Wextra`_ .
-WIndependentClass-attribute
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'objc\_independent\_class' attribute may be put on a typedef only; attribute is ignored` |
+------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'objc\_independent\_class' attribute may be put on Objective-C object pointer type only; attribute is ignored` |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
-WNSObject-attribute
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'NSObject' attribute may be put on a typedef only; attribute is ignored` |
+--------------------------------------------------------------------------------------------------------------+
-Wabi
-----
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wabsolute-value
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `absolute value function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `given an argument of type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `but has parameter of type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `which may cause truncation of value` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `taking the absolute value of` |nbsp| |+--------------------+| |nbsp| :diagtext: `type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is suspicious` |
| ||:diagtext: `pointer` || |
| |+--------------------+| |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `array` || |
| |+--------------------+| |
+---------------------------------------------------------------------------+----------------------+---------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `taking the absolute value of unsigned type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has no effect` |
+------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using` |nbsp| |+--------------------------+| |nbsp| :diagtext: `absolute value function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `when argument is of` |nbsp| |+--------------------------+| |nbsp| :diagtext: `type` |
| ||:diagtext: `integer` || ||:diagtext: `integer` || |
| |+--------------------------+| |+--------------------------+| |
| ||:diagtext: `floating point` || ||:diagtext: `floating point` || |
| |+--------------------------+| |+--------------------------+| |
| ||:diagtext: `complex` || ||:diagtext: `complex` || |
| |+--------------------------+| |+--------------------------+| |
+----------------------------------------------------+----------------------------+------------------------------------------------------------------------------------------------------------------+----------------------------+------------------------+
-Wabstract-final-class
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------+--------------------+-------------+
|:warning: `warning:` |nbsp| :diagtext: `abstract class is marked '` |+------------------+|:diagtext: `'` |
| ||:diagtext: `final` || |
| |+------------------+| |
| ||:diagtext: `sealed` || |
| |+------------------+| |
+-----------------------------------------------------------------+--------------------+-------------+
-Wabstract-vbase-init
---------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initializer for virtual base class` |nbsp| :placeholder: `A` |nbsp| :diagtext: `of abstract class` |nbsp| :placeholder: `B` |nbsp| :diagtext: `will never be used` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Waddress
---------
This diagnostic is enabled by default.
Controls `-Wpointer-bool-conversion`_ , `-Wstring-compare`_ , `-Wtautological-pointer-compare`_ .
-Waddress-of-array-temporary
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Waddress-of-packed-member
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `taking address of packed member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `of class or structure` |nbsp| :placeholder: `B` |nbsp| :diagtext: `may result in an unaligned pointer value` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Waddress-of-temporary
----------------------
This diagnostic is an error by default, but the flag `` -Wno-address-of-temporary `` can be used to disable the error.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `taking the address of a temporary object of type` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------------------+
-Waggregate-return
------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2017-10-27 05:06:52 +08:00
-Waligned-allocation-unavailable
--------------------------------
This diagnostic is an error by default, but the flag `` -Wno-aligned-allocation-unavailable `` can be used to disable the error.
**Diagnostic text:**
+--------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `aligned` |nbsp| |+------------------------+| |nbsp| :diagtext: `function of type '` :placeholder: `B` :diagtext: `' is only available on` |nbsp| :placeholder: `C` |nbsp| :placeholder: `D` |nbsp| :diagtext: `or newer` |
| ||:diagtext: `allocation` || |
| |+------------------------+| |
| ||:diagtext: `deallocation` || |
| |+------------------------+| |
+--------------------------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wall
-----
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wmost`_ , `-Wparentheses`_ , `-Wswitch`_ , `-Wswitch-bool`_ .
2017-01-21 03:27:09 +08:00
-Walloca-with-align-alignof
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `second argument to \_\_builtin\_alloca\_with\_align is supposed to be in bits` |
+--------------------------------------------------------------------------------------------------------------------+
-Wambiguous-delete
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple suitable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `functions for` |nbsp| :placeholder: `B` :diagtext: `; no 'operator delete' function will be invoked if initialization throws an exception` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wambiguous-ellipsis
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+---------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'...' in this location creates a C-style varargs function` |+-------------------------------------------+|
| ||:diagtext: `, not a function parameter pack` ||
| |+-------------------------------------------+|
| || ||
| |+-------------------------------------------+|
+------------------------------------------------------------------------------------------------+---------------------------------------------+
-Wambiguous-macro
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ambiguous expansion of macro` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------+
-Wambiguous-member-template
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `lookup of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in member access expression is ambiguous; using member of` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wanalyzer-incompatible-plugin
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `checker plugin '` :placeholder: `A` :diagtext: `' is not compatible with this version of the analyzer` |
+----------------------------------------------------------------------------------------------------------------------------------------+
-Wanonymous-pack-parens
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++11 requires a parenthesized pack declaration to have a name` |
+---------------------------------------------------------------------------------------------------------+
-Warc
-----
This diagnostic is enabled by default.
2016-09-14 09:55:42 +08:00
Controls `-Warc-non-pod-memaccess`_ , `-Warc-retain-cycles`_ , `-Warc-unsafe-retained-assign`_ .
2016-09-12 13:58:29 +08:00
-Warc-bridge-casts-disallowed-in-nonarc
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' casts have no effect when not using ARC` |
+-------------------------------------------------------------------------------------------------------------+
-Warc-maybe-repeated-use-of-weak
--------------------------------
**Diagnostic text:**
+---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `may be accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext: `and may be unpredictably set to nil; assign to a strong variable to keep the object alive` |
| ||:diagtext: `variable` || ||:diagtext: `function` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext: `property` || ||:diagtext: `method` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext: `implicit property` || ||:diagtext: `block` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext: `instance variable` || ||:diagtext: `lambda` || |
| |+-----------------------------+| |+--------------------+| |
+---------------------------------------------------+-------------------------------+------------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
-Warc-non-pod-memaccess
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+---------------------------+| |nbsp| :diagtext: `this` |nbsp| :placeholder: `B` |nbsp| :diagtext: `call is a pointer to ownership-qualified type` |nbsp| :placeholder: `C` |
| ||:diagtext: `destination for` || |
| |+---------------------------+| |
| ||:diagtext: `source of` || |
| |+---------------------------+| |
+---------------------------+-----------------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
-Warc-performSelector-leaks
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `performSelector may cause a leak because its selector is unknown` |
+-------------------------------------------------------------------------------------------------------+
-Warc-repeated-use-of-weak
--------------------------
Also controls `-Warc-maybe-repeated-use-of-weak`_ .
**Diagnostic text:**
+---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `weak` |nbsp| |+-----------------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `is accessed multiple times in this` |nbsp| |+--------------------+| |nbsp| :diagtext: `but may be unpredictably set to nil; assign to a strong variable to keep the object alive` |
| ||:diagtext: `variable` || ||:diagtext: `function` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext: `property` || ||:diagtext: `method` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext: `implicit property` || ||:diagtext: `block` || |
| |+-----------------------------+| |+--------------------+| |
| ||:diagtext: `instance variable` || ||:diagtext: `lambda` || |
| |+-----------------------------+| |+--------------------+| |
+---------------------------------------------------+-------------------------------+--------------------------------------------------------------------------------------+----------------------+-------------------------------------------------------------------------------------------------------------+
-Warc-retain-cycles
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `capturing` |nbsp| :placeholder: `A` |nbsp| :diagtext: `strongly in this block is likely to lead to a retain cycle` |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
-Warc-unsafe-retained-assign
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `assigning` |nbsp| |+-------------------------------+| |nbsp| :diagtext: `to a weak` |nbsp| |+--------------------+|:diagtext: `; object will be released after assignment` |
| ||:diagtext: `array literal` || ||:diagtext: `property` || |
| |+-------------------------------+| |+--------------------+| |
| ||:diagtext: `dictionary literal` || ||:diagtext: `variable` || |
| |+-------------------------------+| |+--------------------+| |
| ||:diagtext: `numeric literal` || | | |
| |+-------------------------------+| | | |
| ||:diagtext: `boxed expression` || | | |
| |+-------------------------------+| | | |
| ||:diagtext: `<should not happen>` || | | |
| |+-------------------------------+| | | |
| ||:diagtext: `block literal` || | | |
| |+-------------------------------+| | | |
+--------------------------------------------------------+---------------------------------+-------------------------------------+----------------------+------------------------------------------------------+
+---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `assigning retained object to` |nbsp| |+------------------------------+| |nbsp| |+--------------------+|:diagtext: `; object will be released after assignment` |
| ||:diagtext: `weak` || ||:diagtext: `property` || |
| |+------------------------------+| |+--------------------+| |
| ||:diagtext: `unsafe\_unretained` || ||:diagtext: `variable` || |
| |+------------------------------+| |+--------------------+| |
+---------------------------------------------------------------------------+--------------------------------+--------+----------------------+------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `assigning retained object to unsafe property; object will be released after assignment` |
+-----------------------------------------------------------------------------------------------------------------------------+
-Warray-bounds
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
|:warning: `warning:` |nbsp| :diagtext: `array index` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is past the end of the array (which contains` |nbsp| :placeholder: `B` |nbsp| :diagtext: `element` |+-------------+|:diagtext: `)` |
| || || |
| |+-------------+| |
| ||:diagtext: `s` || |
| |+-------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `array index` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is before the beginning of the array` |
+----------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `array argument is too small; contains` |nbsp| :placeholder: `A` |nbsp| :diagtext: `elements, callee requires at least` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'static' has no effect on zero-length arrays` |
+-----------------------------------------------------------------------------------+
-Warray-bounds-pointer-arithmetic
---------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
|:warning: `warning:` |nbsp| :diagtext: `the pointer incremented by` |nbsp| :placeholder: `A` |nbsp| :diagtext: `refers past the end of the array (that contains` |nbsp| :placeholder: `B` |nbsp| :diagtext: `element` |+-------------+|:diagtext: `)` |
| || || |
| |+-------------+| |
| ||:diagtext: `s` || |
| |+-------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+-------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the pointer decremented by` |nbsp| :placeholder: `A` |nbsp| :diagtext: `refers before the beginning of the array` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wasm
-----
2017-01-21 03:27:09 +08:00
This diagnostic is enabled by default.
Controls `-Wasm-ignored-qualifier`_ , `-Wasm-operand-widths`_ .
-Wasm-ignored-qualifier
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignored` |nbsp| :placeholder: `A` |nbsp| :diagtext: `qualifier on asm` |
+----------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `meaningless 'volatile' on asm outside function` |
+-------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wasm-operand-widths
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `value size does not match register size specified by the constraint and modifier` |
+-----------------------------------------------------------------------------------------------------------------------+
-Wassign-enum
-------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `integer constant not in range of enumerated type` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------------------------------------+
-Wassume
--------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the argument to` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has side effects that will be discarded` |
+-----------------------------------------------------------------------------------------------------------------------------------------+
-Wat-protocol
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `@protocol is using a forward protocol declaration of` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------+
-Watomic-memory-ordering
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `memory order argument to atomic operation is invalid` |
+-------------------------------------------------------------------------------------------+
-Watomic-properties
-------------------
2016-09-14 09:55:42 +08:00
Controls `-Wcustom-atomic-properties`_ , `-Wimplicit-atomic-properties`_ .
2016-09-12 13:58:29 +08:00
-Watomic-property-with-user-defined-accessor
--------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+
|:warning: `warning:` |nbsp| :diagtext: `writable atomic property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot pair a synthesized` |nbsp| |+------------------+| |nbsp| :diagtext: `with a user defined` |nbsp| |+------------------+|
| ||:diagtext: `getter` || ||:diagtext: `getter` ||
| |+------------------+| |+------------------+|
| ||:diagtext: `setter` || ||:diagtext: `setter` ||
| |+------------------+| |+------------------+|
+--------------------------------------------------------------------------------------------------------------------------------------------+--------------------+-----------------------------------------------+--------------------+
-Wattribute-packed-for-bitfield
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'packed' attribute was ignored on bit-fields with single-byte alignment in older versions of GCC and Clang` |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
-Wattributes
------------
This diagnostic is enabled by default.
2016-09-14 09:55:42 +08:00
Controls `-Wignored-attributes`_ , `-Wunknown-attributes`_ .
2016-09-12 13:58:29 +08:00
-Wauto-disable-vptr-sanitizer
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicitly disabling vptr sanitizer because rtti wasn't enabled` |
+------------------------------------------------------------------------------------------------------+
-Wauto-import
-------------
**Diagnostic text:**
+-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `treating #` |+-------------------------------+| |nbsp| :diagtext: `as an import of module '` :placeholder: `B` :diagtext: `'` |
| ||:diagtext: `include` || |
| |+-------------------------------+| |
| ||:diagtext: `import` || |
| |+-------------------------------+| |
| ||:diagtext: `include\_next` || |
| |+-------------------------------+| |
| ||:diagtext: `\_\_include\_macros` || |
| |+-------------------------------+| |
+-------------------------------------------------+---------------------------------+-------------------------------------------------------------------------+
-Wauto-storage-class
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Wauto-var-id
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'auto' deduced as 'id' in declaration of` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------+
-Wavailability
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'unavailable' availability overrides all other availability information` |
+--------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown platform` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in availability macro` |
+------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `feature cannot be` |nbsp| |+----------------------+| |nbsp| :diagtext: `in` |nbsp| :placeholder: `B` |nbsp| :diagtext: `version` |nbsp| :placeholder: `C` |nbsp| :diagtext: `before it was` |nbsp| |+----------------------+| |nbsp| :diagtext: `in version` |nbsp| :placeholder: `E` :diagtext: `; attribute ignored` |
| ||:diagtext: `introduced` || ||:diagtext: `introduced` || |
| |+----------------------+| |+----------------------+| |
| ||:diagtext: `deprecated` || ||:diagtext: `deprecated` || |
| |+----------------------+| |+----------------------+| |
| ||:diagtext: `obsoleted` || ||:diagtext: `obsoleted` || |
| |+----------------------+| |+----------------------+| |
+----------------------------------------------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------------+------------------------+-------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use same version number separators '\_' or '.'; as in 'major\[.minor\[.subminor\]\]'` |
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `availability does not match previous declaration` |
+---------------------------------------------------------------------------------------+
+---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+------------------------------+|:diagtext: `method` |nbsp| |+-----------------------------+| |nbsp| |+---------------------------------------------+| |nbsp| :diagtext: `on` |nbsp| :placeholder: `B` |nbsp| :diagtext: `(` :placeholder: `C` |nbsp| :diagtext: `vs.` |nbsp| :placeholder: `D` :diagtext: `)` |
| || || ||:diagtext: `introduced after` || ||:diagtext: `the protocol method it implements` || |
| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| |
| ||:diagtext: `overriding` |nbsp| || ||:diagtext: `deprecated before` || ||:diagtext: `overridden method` || |
| |+------------------------------+| |+-----------------------------+| |+---------------------------------------------+| |
| | | ||:diagtext: `obsoleted before` || | | |
| | | |+-----------------------------+| | | |
+---------------------------+--------------------------------+--------------------------+-------------------------------+--------+-----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
|:warning: `warning:` |nbsp| |+------------------------------+|:diagtext: `method cannot be unavailable on` |nbsp| :placeholder: `A` |nbsp| :diagtext: `when` |nbsp| |+---------------------------------------------+| |nbsp| :diagtext: `is available` |
| || || ||:diagtext: `the protocol method it implements` || |
| |+------------------------------+| |+---------------------------------------------+| |
| ||:diagtext: `overriding` |nbsp| || ||:diagtext: `its overridden method` || |
| |+------------------------------+| |+---------------------------------------------+| |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------------------------+-----------------------------------------------+--------------------------------+
-Wbackend-plugin
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Wbackslash-newline-escape
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `backslash and newline separated by space` |
+-------------------------------------------------------------------------------+
-Wbad-function-cast
-------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast from function call of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to non-matching type` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wbinary-literal
----------------
Controls `-Wc++14-binary-literal`_ , `-Wc++98-c++11-compat-binary-literal`_ , `-Wgnu-binary-literal`_ .
2016-09-12 13:58:29 +08:00
-Wbind-to-temporary-copy
------------------------
Also controls `-Wc++98-compat-bind-to-temporary-copy`_ .
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
|:warning: `warning:` |nbsp| :diagtext: `C++98 requires an accessible copy constructor for class` |nbsp| :placeholder: `C` |nbsp| :diagtext: `when binding a reference to a temporary; was` |nbsp| |+---------------------+|
| ||:diagtext: `private` ||
| |+---------------------+|
| ||:diagtext: `protected` ||
| |+---------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext: `of type` |nbsp| :placeholder: `B` :diagtext: `; C++98 requires a copy constructor when binding a reference to a temporary` |
| ||:diagtext: `copying variable` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying parameter` || |
| |+---------------------------------------+| |
| ||:diagtext: `returning object` || |
| |+---------------------------------------+| |
| ||:diagtext: `throwing object` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying member subobject` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying array element` || |
| |+---------------------------------------+| |
| ||:diagtext: `allocating object` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying temporary` || |
| |+---------------------------------------+| |
| ||:diagtext: `initializing base subobject` || |
| |+---------------------------------------+| |
| ||:diagtext: `initializing vector element` || |
| |+---------------------------------------+| |
| ||:diagtext: `capturing value` || |
| |+---------------------------------------+| |
+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
-Wbitfield-constant-conversion
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit truncation from` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to bit-field changes value from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2017-04-14 06:44:22 +08:00
-Wbitfield-enum-conversion
--------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `bit-field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not wide enough to store all enumerators of` |nbsp| :placeholder: `B` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `signed bit-field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `needs an extra bit to represent the largest positive enumerators of` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `assigning value of signed enum type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `to unsigned bit-field` |nbsp| :placeholder: `A` :diagtext: `; negative enumerators of enum` |nbsp| :placeholder: `B` |nbsp| :diagtext: `will be converted to positive values` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wbitfield-width
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
|:warning: `warning:` |nbsp| :diagtext: `width of anonymous bit-field (` :placeholder: `A` |nbsp| :diagtext: `bits) exceeds width of its type; value will be truncated to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `bit` |+-------------+|
| || ||
| |+-------------+|
| ||:diagtext: `s` ||
| |+-------------+|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
|:warning: `warning:` |nbsp| :diagtext: `width of bit-field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `(` :placeholder: `B` |nbsp| :diagtext: `bits) exceeds the width of its type; value will be truncated to` |nbsp| :placeholder: `C` |nbsp| :diagtext: `bit` |+-------------+|
| || ||
| |+-------------+|
| ||:diagtext: `s` ||
| |+-------------+|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------+
-Wbitwise-op-parentheses
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' within '` :placeholder: `B` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wblock-capture-autoreleasing
-----------------------------
2017-04-14 06:44:22 +08:00
This diagnostic is enabled by default.
2017-01-21 03:27:09 +08:00
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `block captures an autoreleasing out-parameter, which may result in use-after-free bugs` |
+-----------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wbool-conversion
-----------------
This diagnostic is enabled by default.
Also controls `-Wpointer-bool-conversion`_ , `-Wundefined-bool-conversion`_ .
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initialization of pointer of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to null from a constant boolean expression` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wbool-conversions
------------------
Synonym for `-Wbool-conversion`_ .
-Wbraced-scalar-init
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `braces around scalar initializer` |
+-----------------------------------------------------------------------+
-Wbridge-cast
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `bridges to` |nbsp| :placeholder: `B` :diagtext: `, not` |nbsp| :placeholder: `C` |
+------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot bridge to` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------+
-Wbuiltin-macro-redefined
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redefining builtin macro` |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `undefining builtin macro` |
+---------------------------------------------------------------+
-Wbuiltin-memcpy-chk-size
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will always overflow destination buffer` |
+------------------------------------------------------------------------------------------------------+
-Wbuiltin-requires-header
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration of built-in function '` :placeholder: `B` :diagtext: `' requires inclusion of the header <` :placeholder: `A` :diagtext: `>` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++-compat
------------
**Diagnostic text:**
+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
|:warning: `warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext: `has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext: `in C++` |
| || |||:diagtext: `struct` || ||:diagtext: `size 1` || |
| |+-------------------------+|+------------------+| |+-------------------------+| |
| ||:diagtext: `empty` |nbsp| |||:diagtext: `union` || ||:diagtext: `non-zero size` || |
| |+-------------------------+|+------------------+| |+-------------------------+| |
+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
-Wc++0x-compat
--------------
Synonym for `-Wc++11-compat`_ .
-Wc++0x-extensions
------------------
Synonym for `-Wc++11-extensions`_ .
-Wc++0x-narrowing
-----------------
Synonym for `-Wc++11-narrowing`_ .
-Wc++11-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.
2017-10-27 05:06:52 +08:00
Also controls `-Wc++11-compat-deprecated-writable-strings`_ , `-Wc++11-compat-reserved-user-defined-literal`_ , `-Wc++11-narrowing`_ , `-Wc++98-c++11-c++14-c++17-compat`_ , `-Wc++98-c++11-c++14-compat`_ , `-Wc++98-c++11-compat`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `integer literal is too large to be represented in type 'long' and is subject to undefined behavior under C++98, interpreting as 'unsigned long'; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext: `in C++11 onwards` |
| ||:diagtext: `have type 'long long'` || |
| |+---------------------------------+| |
| ||:diagtext: `be ill-formed` || |
| |+---------------------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'auto' storage class specifier is redundant and incompatible with C++11` |
+--------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `identifier after literal will be treated as a user-defined literal suffix in C++11` |
+-------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' is a keyword in C++11` |
+-------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of right-shift operator ('>>') in template argument will require parentheses in C++11` |
+--------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit instantiation cannot be 'inline'` |
+--------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit instantiation of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `must occur at global scope` |
+--------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit instantiation of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not in a namespace enclosing` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit instantiation of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `must occur in namespace` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C++98; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext: `in C++11 onwards` |
| ||:diagtext: `have type 'long long'` || |
| |+---------------------------------+| |
| ||:diagtext: `be ill-formed` || |
| |+---------------------------------+| |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------------+
-Wc++11-compat-deprecated-writable-strings
------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conversion from string literal to` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is deprecated` |
+---------------------------------------------------------------------------------------------------------------------------------+
-Wc++11-compat-pedantic
-----------------------
2017-10-27 05:06:52 +08:00
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wc++11-compat`_ , `-Wc++98-c++11-c++14-c++17-compat-pedantic`_ , `-Wc++98-c++11-c++14-compat-pedantic`_ , `-Wc++98-c++11-compat-pedantic`_ .
2016-09-12 13:58:29 +08:00
-Wc++11-compat-reserved-user-defined-literal
--------------------------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `identifier after literal will be treated as a reserved user-defined literal suffix in C++11` |
+----------------------------------------------------------------------------------------------------------------------------------+
-Wc++11-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++11-extra-semi`_ , `-Wc++11-inline-namespace`_ , `-Wc++11-long-long`_ .
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `alias declarations are a C++11 extension` |
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from array size expression of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| |+-----------------------+| |nbsp| :diagtext: `type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `is a C++11 extension` |
| ||:diagtext: `integral` || |
| |+-----------------------+| |
| ||:diagtext: `enumeration` || |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'auto' type specifier is a C++11 extension` |
+---------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration types with a fixed underlying type are a C++11 extension` |
+-----------------------------------------------------------------------------------------------------------+
+---------------------------+-----------------------+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+---------------------+| |nbsp| :diagtext: `function definitions are a C++11 extension` |
| ||:diagtext: `defaulted` || |
| |+---------------------+| |
| ||:diagtext: `deleted` || |
| |+---------------------+| |
+---------------------------+-----------------------+--------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `befriending enumeration type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a C++11 extension` |
+-----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `commas at the end of enumerator lists are a C++11 extension` |
+--------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit conversion functions are a C++11 extension` |
+------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extern templates are a C++11 extension` |
+-----------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `range-based for loop is a C++11 extension` |
+--------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `generalized initializer lists are a C++11 extension` |
+------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of enumeration in a nested name specifier is a C++11 extension` |
+---------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-class friend type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a C++11 extension` |
+----------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `in-class initialization of non-static data member is a C++11 extension` |
+-------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' keyword is a C++11 extension` |
+--------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference qualifiers on functions are a C++11 extension` |
+----------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `rvalue references are a C++11 extension` |
+------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `scoped enumerations are a C++11 extension` |
+--------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static data member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in union is a C++11 extension` |
+----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `with internal linkage is a C++11 extension` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `object` || |
| |+--------------------+| |
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'template' keyword outside of a template` |
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `default template arguments for a function template are a C++11 extension` |
+---------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `first declaration of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext: `specialization of` |nbsp| :placeholder: `B` |nbsp| :diagtext: `outside namespace` |nbsp| :placeholder: `C` |nbsp| :diagtext: `is a C++11 extension` |
| ||:diagtext: `class template` || |
| |+-------------------------------------+| |
| ||:diagtext: `class template partial` || |
| |+-------------------------------------+| |
| ||:diagtext: `variable template` || |
| |+-------------------------------------+| |
| ||:diagtext: `variable template partial` || |
| |+-------------------------------------+| |
| ||:diagtext: `function template` || |
| |+-------------------------------------+| |
| ||:diagtext: `member function` || |
| |+-------------------------------------+| |
| ||:diagtext: `static data member` || |
| |+-------------------------------------+| |
| ||:diagtext: `member class` || |
| |+-------------------------------------+| |
| ||:diagtext: `member enumeration` || |
| |+-------------------------------------+| |
+-------------------------------------------------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'typename' occurs outside of a template` |
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unelaborated friend declaration is a C++11 extension; specify '` |+---------------------+|:diagtext: `' to befriend` |nbsp| :placeholder: `B` |
| ||:diagtext: `struct` || |
| |+---------------------+| |
| ||:diagtext: `interface` || |
| |+---------------------+| |
| ||:diagtext: `union` || |
| |+---------------------+| |
| ||:diagtext: `class` || |
| |+---------------------+| |
| ||:diagtext: `enum` || |
| |+---------------------+| |
+------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variadic templates are a C++11 extension` |
+-------------------------------------------------------------------------------+
-Wc++11-extra-semi
------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra ';' outside of a function is a C++11 extension` |
+-------------------------------------------------------------------------------------------+
-Wc++11-inline-namespace
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `inline namespaces are a C++11 feature` |
+----------------------------------------------------------------------------+
-Wc++11-long-long
-----------------
**Diagnostic text:**
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'long long' is a C++11 extension` |
+-----------------------------------------------------------------------+
-Wc++11-narrowing
-----------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| |+--------------------------------------+| |nbsp| |+------------------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `case value` || ||+--------------------------------------------------------------------------------------------------------------+ ||
| |+--------------------------------------+| |||:diagtext: `cannot be narrowed from type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to` |nbsp| :placeholder: `D` | ||
| ||:diagtext: `enumerator value` || ||+--------------------------------------------------------------------------------------------------------------+ ||
| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `non-type template argument` || ||+----------------------------------------------------------------------------------------------------------------------+||
| |+--------------------------------------+| |||:diagtext: `evaluates to` |nbsp| :placeholder: `C` :diagtext: `, which cannot be narrowed to type` |nbsp| :placeholder: `D` |||
| ||:diagtext: `array size` || ||+----------------------------------------------------------------------------------------------------------------------+||
| |+--------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `constexpr if condition` || | |
| |+--------------------------------------+| | |
+-----------------------+----------------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `constant expression evaluates to` |nbsp| :placeholder: `A` |nbsp| :diagtext: `which cannot be narrowed to type` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot be narrowed to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `in initializer list` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `non-constant-expression cannot be narrowed from type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `in initializer list` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `constant expression evaluates to` |nbsp| :placeholder: `A` |nbsp| :diagtext: `which cannot be narrowed to type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `in C++11` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot be narrowed to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `in initializer list in C++11` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-constant-expression cannot be narrowed from type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `in initializer list in C++11` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++14-binary-literal
----------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `binary integer literals are a C++14 extension` |
+------------------------------------------------------------------------------------+
-Wc++14-compat
--------------
2017-10-27 05:06:52 +08:00
Controls `-Wc++98-c++11-c++14-c++17-compat`_ , `-Wc++98-c++11-c++14-compat`_ .
2016-09-12 13:58:29 +08:00
-Wc++14-compat-pedantic
-----------------------
2017-10-27 05:06:52 +08:00
Controls `-Wc++14-compat`_ , `-Wc++98-c++11-c++14-c++17-compat-pedantic`_ , `-Wc++98-c++11-c++14-compat-pedantic`_ .
2016-09-12 13:58:29 +08:00
-Wc++14-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++14-binary-literal`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is a C++14 extension` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple return statements in constexpr function is a C++14 extension` |
+------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is a C++14 extension` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+----------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+-----------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is a C++14 extension` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------+-------------------------+----------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of the` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute is a C++14 extension` |
+---------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'decltype(auto)' type specifier is a C++14 extension` |
+-------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initialized lambda captures are a C++14 extension` |
+----------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable templates are a C++14 extension` |
+-------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wc++17-compat
--------------
Some of the diagnostics controlled by this flag are enabled by default.
2016-09-12 13:58:29 +08:00
2017-10-27 05:06:52 +08:00
Controls `-Wc++17-compat-mangling`_ , `-Wc++98-c++11-c++14-c++17-compat`_ , `-Wdeprecated-increment-bool`_ , `-Wdeprecated-register`_ .
2016-09-12 13:58:29 +08:00
2017-10-27 05:06:52 +08:00
-Wc++17-compat-mangling
-----------------------
This diagnostic is enabled by default.
2017-01-21 03:27:09 +08:00
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `mangled name of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will change in C++17 due to non-throwing exception specification in function signature` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2017-10-27 05:06:52 +08:00
-Wc++17-compat-pedantic
-----------------------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wc++17-compat`_ , `-Wc++98-c++11-c++14-c++17-compat-pedantic`_ .
-Wc++17-extensions
2016-09-12 13:58:29 +08:00
------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `constexpr if is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `'constexpr' on lambda expressions is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `use of the` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `decomposition declarations are a C++17 extension` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `pack fold expression is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `'begin' and 'end' returning different types (` :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` :diagtext: `) is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `hexadecimal floating literals are a C++17 feature` |
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+----------------------------------------+--------------------+-------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `'` |+------------------+|:diagtext: `' initialization statements are a C++17 extension` |
2017-01-21 03:27:09 +08:00
| ||:diagtext: `if` || |
| |+------------------+| |
| ||:diagtext: `switch` || |
| |+------------------+| |
+----------------------------------------+--------------------+-------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `inline variables are a C++17 extension` |
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+---------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `use of multiple declarators in a single using declaration is a C++17 extension` |
2017-01-21 03:27:09 +08:00
+---------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `nested namespace definition is a C++17 extension; define each namespace separately` |
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext: `declaration are a C++17 extension` |
| ||:diagtext: `a namespace` || |
| |+-------------------------+| |
| ||:diagtext: `an enumerator` || |
| |+-------------------------+| |
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `capture of '\*this' by copy is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `static\_assert with no message is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `template template parameter using 'typename' is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `default scope specifier for attributes is a C++17 extension` |
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `pack expansion of using declaration is a C++17 extension` |
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2017-10-27 05:06:52 +08:00
-Wc++1y-extensions
------------------
Synonym for `-Wc++14-extensions`_ .
-Wc++1z-compat
--------------
Synonym for `-Wc++17-compat`_ .
-Wc++1z-compat-mangling
-----------------------
Synonym for `-Wc++17-compat-mangling`_ .
-Wc++1z-extensions
------------------
Synonym for `-Wc++17-extensions`_ .
-Wc++2a-compat
--------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' is a keyword in C++2a` |
+-------------------------------------------------------------------------------------------+
-Wc++2a-compat-pedantic
-----------------------
Synonym for `-Wc++2a-compat`_ .
-Wc++2a-extensions
------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `default member initializer for bit-field is a C++2a extension` |
+----------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit capture of 'this' with a capture default of '=' is a C++2a extension` |
+--------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension` |
+--------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-c++17-compat
--------------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `default member initializer for bit-field is incompatible with C++ standards before C++2a` |
+-------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-c++17-compat-pedantic
-----------------------------------------
Also controls `-Wc++98-c++11-c++14-c++17-compat`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wc++98-c++11-c++14-compat
--------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `constexpr if is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `constexpr on lambda expressions is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `decomposition declarations are incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `pack fold expression is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| |+------------------+| |nbsp| :diagtext: `initialization statements are incompatible with C++ standards before C++17` |
2017-01-21 03:27:09 +08:00
| ||:diagtext: `if` || |
| |+------------------+| |
| ||:diagtext: `switch` || |
| |+------------------+| |
+---------------------------+--------------------+----------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `inline variables are incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `nested namespace definition is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `by value capture of '\*this' is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `static\_assert with no message is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `non-type template parameters declared with` |nbsp| :placeholder: `A` |nbsp| :diagtext: `are incompatible with C++ standards before C++17` |
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `template template parameter using 'typename' is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `unicode literals are incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `default scope specifier for attributes is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `use of multiple declarators in a single using declaration is incompatible with C++ standards before C++17` |
2017-01-21 03:27:09 +08:00
+------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `pack expansion using declaration is incompatible with C++ standards before C++17` |
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `'begin' and 'end' returning different types (` :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` :diagtext: `) is incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-c++14-compat-pedantic
-----------------------------------
Also controls `-Wc++98-c++11-c++14-compat`_ .
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext: `declaration are incompatible with C++ standards before C++17` |
| ||:diagtext: `a namespace` || |
| |+-------------------------+| |
| ||:diagtext: `an enumerator` || |
| |+-------------------------+| |
+------------------------------------------------------------+---------------------------+--------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `hexadecimal floating literals are incompatible with C++ standards before C++17` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------+
-Wc++98-c++11-compat
--------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of this statement in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is incompatible with C++ standards before C++14` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple return statements in constexpr function is incompatible with C++ standards before C++14` |
+---------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `constexpr function with no return statements is incompatible with C++ standards before C++14` |
+-----------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable declaration in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is incompatible with C++ standards before C++14` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+----------------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type definition in a constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is incompatible with C++ standards before C++14` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------+-------------------------+-------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'decltype(auto)' type specifier is incompatible with C++ standards before C++14` |
+----------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `digit separators are incompatible with C++ standards before C++14` |
+--------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initialized lambda captures are incompatible with C++ standards before C++14` |
+-------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable templates are incompatible with C++ standards before C++14` |
+----------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wc++98-c++11-compat-binary-literal
-----------------------------------
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `binary integer literals are incompatible with C++ standards before C++14` |
+---------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wc++98-c++11-compat-pedantic
-----------------------------
Controls `-Wc++98-c++11-compat`_ , `-Wc++98-c++11-compat-binary-literal`_ .
2016-09-12 13:58:29 +08:00
-Wc++98-compat
--------------
2017-10-27 05:06:52 +08:00
Also controls `-Wc++98-c++11-c++14-c++17-compat`_ , `-Wc++98-c++11-c++14-compat`_ , `-Wc++98-c++11-compat`_ , `-Wc++98-compat-local-type-template-args`_ , `-Wc++98-compat-unnamed-type-template-args`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `alias declarations are incompatible with C++98` |
+-------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'alignas' is incompatible with C++98` |
+---------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `alignof expressions are incompatible with C++98` |
+--------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `C++11 attribute syntax is incompatible with C++98` |
+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'auto' type specifier is incompatible with C++98` |
+---------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'constexpr' specifier is incompatible with C++98` |
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `constructor call from initializer list is incompatible with C++98` |
+--------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'decltype' type specifier is incompatible with C++98` |
+-------------------------------------------------------------------------------------------+
+---------------------------+-----------------------+--------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+---------------------+| |nbsp| :diagtext: `function definitions are incompatible with C++98` |
| ||:diagtext: `defaulted` || |
| |+---------------------+| |
| ||:diagtext: `deleted` || |
| |+---------------------+| |
+---------------------------+-----------------------+--------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `delegating constructors are incompatible with C++98` |
+------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `scalar initialized from empty initializer list is incompatible with C++98` |
+----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration types with a fixed underlying type are incompatible with C++98` |
+-----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `befriending enumeration type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is incompatible with C++98` |
+-----------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration type in nested name specifier is incompatible with C++98` |
+-----------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit conversion functions are incompatible with C++98` |
+------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `range-based for loop is incompatible with C++98` |
+--------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `friend declaration naming a member of the declaring class is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `generalized initializer lists are incompatible with C++98` |
+------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `jump from this goto statement to its label is incompatible with C++98` |
+------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `jump from this indirect goto statement to one of its possible targets is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initialization of initializer\_list object is incompatible with C++98` |
+------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `inline namespaces are incompatible with C++98` |
+------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `lambda expressions are incompatible with C++98` |
+-------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'<::' is treated as digraph '<:' (aka '\[') followed by ':' in C++98` |
+-----------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `literal operators are incompatible with C++98` |
+------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `universal character name referring to a control character is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `specifying character '` :placeholder: `A` :diagtext: `' with a universal character name is incompatible with C++98` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `noexcept specifications are incompatible with C++98` |
+------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `noexcept expressions are incompatible with C++98` |
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of non-static data member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in an unevaluated context is incompatible with C++98` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-class friend type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is incompatible with C++98` |
+----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `in-class initialization of non-static data members is incompatible with C++98` |
+--------------------------------------------------------------------------------------------------------------------+
+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
|:warning: `warning:` |nbsp| |+----------------------------+| |nbsp| :diagtext: `member` |nbsp| :placeholder: `B` |nbsp| :diagtext: `with a non-trivial` |nbsp| |+------------------------------------+| |nbsp| :diagtext: `is incompatible with C++98` |
| ||:diagtext: `anonymous struct` || ||:diagtext: `constructor` || |
| |+----------------------------+| |+------------------------------------+| |
| ||:diagtext: `union` || ||:diagtext: `copy constructor` || |
| |+----------------------------+| |+------------------------------------+| |
| | | ||:diagtext: `move constructor` || |
| | | |+------------------------------------+| |
| | | ||:diagtext: `copy assignment operator` || |
| | | |+------------------------------------+| |
| | | ||:diagtext: `move assignment operator` || |
| | | |+------------------------------------+| |
| | | ||:diagtext: `destructor` || |
| | | |+------------------------------------+| |
+---------------------------+------------------------------+------------------------------------------------------------------------------------------------+--------------------------------------+----------------------------------------------+
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'nullptr' is incompatible with C++98` |
+---------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' keyword is incompatible with C++98` |
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `passing object of trivial but non-POD type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `through variadic` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is incompatible with C++98` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `block` || |
| |+-----------------------+| |
| ||:diagtext: `method` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `raw string literals are incompatible with C++98` |
+--------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference qualifiers on functions are incompatible with C++98` |
+----------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference initialized from initializer list is incompatible with C++98` |
+-------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `rvalue references are incompatible with C++98` |
+------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `scoped enumerations are incompatible with C++98` |
+--------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `substitution failure due to access control is incompatible with C++98` |
+------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static\_assert declarations are incompatible with C++98` |
+----------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static data member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in union is incompatible with C++98` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `jump from switch statement to this case label is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redundant parentheses surrounding address non-type template argument are incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of null pointer as non-type template argument is incompatible with C++98` |
+-------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-type template argument referring to` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `with internal linkage is incompatible with C++98` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `object` || |
| |+--------------------+| |
+--------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of 'template' keyword outside of a template is incompatible with C++98` |
+-----------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `default template arguments for a function template are incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------------+
+---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext: `specialization of` |nbsp| :placeholder: `B` |nbsp| :diagtext: `outside namespace` |nbsp| :placeholder: `C` |nbsp| :diagtext: `is incompatible with C++98` |
| ||:diagtext: `class template` || |
| |+-------------------------------------+| |
| ||:diagtext: `class template partial` || |
| |+-------------------------------------+| |
| ||:diagtext: `variable template` || |
| |+-------------------------------------+| |
| ||:diagtext: `variable template partial` || |
| |+-------------------------------------+| |
| ||:diagtext: `function template` || |
| |+-------------------------------------+| |
| ||:diagtext: `member function` || |
| |+-------------------------------------+| |
| ||:diagtext: `static data member` || |
| |+-------------------------------------+| |
| ||:diagtext: `member class` || |
| |+-------------------------------------+| |
| ||:diagtext: `member enumeration` || |
| |+-------------------------------------+| |
+---------------------------+---------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `trailing return types are incompatible with C++98` |
+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `consecutive right angle brackets are incompatible with C++98 (use '> >')` |
+---------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of 'typename' outside of a template is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `befriending` |nbsp| :placeholder: `B` |nbsp| :diagtext: `without '` |+---------------------+|:diagtext: `' keyword is incompatible with C++98` |
| ||:diagtext: `struct` || |
| |+---------------------+| |
| ||:diagtext: `interface` || |
| |+---------------------+| |
| ||:diagtext: `union` || |
| |+---------------------+| |
| ||:diagtext: `class` || |
| |+---------------------+| |
| ||:diagtext: `enum` || |
| |+---------------------+| |
+-------------------------------------------------------------------------------------------------------+-----------------------+------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using this character in an identifier is incompatible with C++98` |
+-------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unicode literals are incompatible with C++98` |
+-----------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' type specifier is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `inheriting constructors are incompatible with C++98` |
+------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variadic templates are incompatible with C++98` |
+-------------------------------------------------------------------------------------+
-Wc++98-compat-bind-to-temporary-copy
-------------------------------------
**Diagnostic text:**
+---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
|:warning: `warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext: `of type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `when binding a reference to a temporary would` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext: `in C++98` |
| ||:diagtext: `copying variable` || ||:diagtext: `invoke an inaccessible constructor` || |
| |+---------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext: `copying parameter` || ||:diagtext: `find no viable constructor` || |
| |+---------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext: `returning object` || ||:diagtext: `find ambiguous constructors` || |
| |+---------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext: `throwing object` || ||:diagtext: `invoke a deleted constructor` || |
| |+---------------------------------------+| |+----------------------------------------------+| |
| ||:diagtext: `copying member subobject` || | | |
| |+---------------------------------------+| | | |
| ||:diagtext: `copying array element` || | | |
| |+---------------------------------------+| | | |
| ||:diagtext: `allocating object` || | | |
| |+---------------------------------------+| | | |
| ||:diagtext: `copying temporary` || | | |
| |+---------------------------------------+| | | |
| ||:diagtext: `initializing base subobject` || | | |
| |+---------------------------------------+| | | |
| ||:diagtext: `initializing vector element` || | | |
| |+---------------------------------------+| | | |
+---------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------+----------------------------+
-Wc++98-compat-local-type-template-args
---------------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `local type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `as template argument is incompatible with C++98` |
+--------------------------------------------------------------------------------------------------------------------------------------------+
-Wc++98-compat-pedantic
-----------------------
2017-10-27 05:06:52 +08:00
Also controls `-Wc++98-c++11-c++14-c++17-compat-pedantic`_ , `-Wc++98-c++11-c++14-compat-pedantic`_ , `-Wc++98-c++11-compat-pedantic`_ , `-Wc++98-compat`_ , `-Wc++98-compat-bind-to-temporary-copy`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from array size expression of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| |+-----------------------+| |nbsp| :diagtext: `type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `is incompatible with C++98` |
| ||:diagtext: `integral` || |
| |+-----------------------+| |
| ||:diagtext: `enumeration` || |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast between pointer-to-function and pointer-to-object is incompatible with C++98` |
+------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty macro arguments are incompatible with C++98` |
+----------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `commas at the end of enumerator lists are incompatible with C++98` |
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extern templates are incompatible with C++98` |
+-----------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'long long' is incompatible with C++98` |
+-----------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `C++98 requires newline at end of file` |
+----------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#line number greater than 32767 is incompatible with C++98` |
+-------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra ';' outside of a function is incompatible with C++98` |
+-------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variadic macros are incompatible with C++98` |
+----------------------------------------------------------------------------------+
-Wc++98-compat-unnamed-type-template-args
-----------------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unnamed type as template argument is incompatible with C++98` |
+---------------------------------------------------------------------------------------------------+
-Wc11-extensions
----------------
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `anonymous unions are a C11 extension` |
+---------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a C11-specific feature` |
+----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `anonymous structs are a C11 extension` |
+----------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `generic selections are a C11-specific feature` |
+------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_Noreturn functions are a C11-specific feature` |
+--------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_Static\_assert is a C11-specific feature` |
+---------------------------------------------------------------------------------+
-Wc99-compat
------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+---------------------------+--------------------------------------------------------+--------------------------------------------+
|:warning: `warning:` |nbsp| |+------------------------------------------------------+| |nbsp| :diagtext: `is incompatible with C99` |
| ||:diagtext: `using this character in an identifier` || |
| |+------------------------------------------------------+| |
| ||:diagtext: `starting an identifier with this character` || |
| |+------------------------------------------------------+| |
+---------------------------+--------------------------------------------------------+--------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unicode literals are incompatible with C99` |
+---------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will` |nbsp| |+---------------------------------+| |nbsp| :diagtext: `in C99 onwards` |
| ||:diagtext: `have type 'long long'` || |
| |+---------------------------------+| |
| ||:diagtext: `be ill-formed` || |
| |+---------------------------------+| |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+----------------------------------+
-Wc99-extensions
----------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initializer for aggregate is not a compile-time constant` |
+-----------------------------------------------------------------------------------------------+
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------+|:diagtext: `array size` |nbsp| |+---------------------+|:diagtext: `is a C99 feature` |
| ||:diagtext: `qualifier in` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| ||:diagtext: `static` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| || || ||:diagtext: `'\[\*\] '` || |
| |+--------------------------------+| |+---------------------+| |
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `compound literals are a C99-specific feature` |
+-----------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array members are a C99 feature` |
+-------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable declaration in for loop is a C99-specific feature` |
+-------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C99 requires whitespace after the macro name` |
+---------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `designated initializers are a C99 feature` |
+--------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty macro arguments are a C99 feature` |
+------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `commas at the end of enumerator lists are a C99-specific feature` |
+-------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `hexadecimal floating constants are a C99 feature` |
+---------------------------------------------------------------------------------------+
-Wcast-align
------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `increases required alignment from` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to` |nbsp| :placeholder: `D` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-calling-convention
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast between incompatible calling conventions '` :placeholder: `A` :diagtext: `' and '` :placeholder: `B` :diagtext: `'; calls through this pointer may abort at runtime` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-of-sel-type
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is deprecated; use sel\_getName instead` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wcast-qual
-----------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `drops` |nbsp| |+-----------------------------------------+|
| ||:diagtext: `const and volatile qualifiers` ||
| |+-----------------------------------------+|
| ||:diagtext: `const qualifier` ||
| |+-----------------------------------------+|
| ||:diagtext: `volatile qualifier` ||
| |+-----------------------------------------+|
+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `must have all intermediate pointers const qualified to be safe` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wchar-align
------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wchar-subscripts
-----------------
**Diagnostic text:**
+------------------------------------------------------------+-------------------------+-------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `array section` |nbsp| |+-----------------------+| |nbsp| :diagtext: `is of type 'char'` |
| ||:diagtext: `lower bound` || |
| |+-----------------------+| |
| ||:diagtext: `length` || |
| |+-----------------------+| |
+------------------------------------------------------------+-------------------------+-------------------------------------+
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `array subscript is of type 'char'` |
+------------------------------------------------------------------------+
-Wclang-cl-pch
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `support for '/Yc' with more than one source file not implemented yet; flag ignored` |
+-------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `support for '/Yc' and '/Yu' with different filenames not implemented yet; flags ignored` |
+------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `support for '` :placeholder: `A` :diagtext: `' without a filename not implemented yet; flag ignored` |
+--------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `support for '` :placeholder: `A` :diagtext: `' without a corresponding /FI flag not implemented yet; flag ignored` |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wclass-varargs
---------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wnon-pod-varargs`_ .
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `passing object of class type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `through variadic` |nbsp| |+-----------------------+|+--------------------------------------------------------------------+|
| ||:diagtext: `function` ||| ||
| |+-----------------------+|+--------------------------------------------------------------------+|
| ||:diagtext: `block` |||+------------------------------------------------------------------+||
| |+-----------------------+|||:diagtext: `; did you mean to call '` :placeholder: `D` :diagtext: `'?` |||
| ||:diagtext: `method` |||+------------------------------------------------------------------+||
| |+-----------------------+|+--------------------------------------------------------------------+|
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------+
-Wcomma
-------
**Diagnostic text:**
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `possible misuse of comma operator here` |
+-----------------------------------------------------------------------------+
-Wcomment
---------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `escaped newline between \*/ characters at block comment end` |
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `// comments are not allowed in this language` |
+-----------------------------------------------------------------------------------+
+------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multi-line // comment` |
+------------------------------------------------------------+
+-----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'/\*' within block comment` |
+-----------------------------------------------------------------+
-Wcomments
----------
Synonym for `-Wcomment`_ .
-Wcompare-distinct-pointer-types
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of distinct pointer types` |
+---------------------------------------------------------------------------+
-Wcomplex-component-init
------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `complex initialization specifying real and imaginary components is an extension` |
+----------------------------------------------------------------------------------------------------------------------+
-Wconditional-type-mismatch
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pointer/integer type mismatch in conditional expression` |
+----------------------------------------------------------------------------------------------+
-Wconditional-uninitialized
---------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------+-------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `may be uninitialized when` |nbsp| |+-----------------------------+|
| ||:diagtext: `used here` ||
| |+-----------------------------+|
| ||:diagtext: `captured by block` ||
| |+-----------------------------+|
+----------------------------------------------------------------------------------------------------------------------------+-------------------------------+
-Wconfig-macros
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+
|:warning: `warning:` |nbsp| |+----------------------+| |nbsp| :diagtext: `of configuration macro '` :placeholder: `B` :diagtext: `' has no effect on the import of '` :placeholder: `C` :diagtext: `'; pass '` |+------------------------------------------------+|:diagtext: `' on the command line to configure the module` |
| ||:diagtext: `definition` || ||+----------------------------------------------+|| |
| |+----------------------+| |||:diagtext: `-D` :placeholder: `B` :diagtext: `=...` ||| |
| ||:diagtext: `#undef` || ||+----------------------------------------------+|| |
| |+----------------------+| |+------------------------------------------------+| |
| | | ||+------------------------------+ || |
| | | |||:diagtext: `-U` :placeholder: `B` | || |
| | | ||+------------------------------+ || |
| | | |+------------------------------------------------+| |
+---------------------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------+---------------------------------------------------------+
-Wconstant-conversion
---------------------
This diagnostic is enabled by default.
Also controls `-Wbitfield-constant-conversion`_ .
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to` |nbsp| :placeholder: `D` |nbsp| :diagtext: `changes value from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconstant-logical-operand
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of logical '` :placeholder: `A` :diagtext: `' with constant operand` |
+----------------------------------------------------------------------------------------------------------+
-Wconstexpr-not-const
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'constexpr' non-static member function will not be implicitly 'const' in C++14; add 'const' to avoid a change in behavior` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconsumed
----------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `consumed analysis attribute is attached to member of class '` :placeholder: `A` :diagtext: `' which isn't marked as consumable` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `state of variable '` :placeholder: `A` :diagtext: `' must match at the entry and exit of loop` |
+--------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parameter '` :placeholder: `A` :diagtext: `' not in expected state when the function returns: expected '` :placeholder: `B` :diagtext: `', observed '` :placeholder: `C` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument not in expected state; expected '` :placeholder: `A` :diagtext: `', observed '` :placeholder: `B` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `return state set for an unconsumable type '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `return value not in expected state; expected '` :placeholder: `A` :diagtext: `', observed '` :placeholder: `B` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid invocation of method '` :placeholder: `A` :diagtext: `' on object '` :placeholder: `B` :diagtext: `' while it is in the '` :placeholder: `C` :diagtext: `' state` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid invocation of method '` :placeholder: `A` :diagtext: `' on a temporary object while it is in the '` :placeholder: `B` :diagtext: `' state` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconversion
------------
Some of the diagnostics controlled by this flag are enabled by default.
2017-04-14 06:44:22 +08:00
Also controls `-Wbitfield-enum-conversion`_ , `-Wbool-conversion`_ , `-Wconstant-conversion`_ , `-Wenum-conversion`_ , `-Wfloat-conversion`_ , `-Wint-conversion`_ , `-Wliteral-conversion`_ , `-Wnon-literal-null-conversion`_ , `-Wnull-conversion`_ , `-Wobjc-literal-conversion`_ , `-Wshorten-64-to-32`_ , `-Wsign-conversion`_ , `-Wstring-conversion`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion discards imaginary component:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion loses floating-point precision:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion loses integer precision:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion turns vector to scalar:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-type template argument with value '` :placeholder: `A` :diagtext: `' converted to '` :placeholder: `B` :diagtext: `' for unsigned template parameter of type` |nbsp| :placeholder: `C` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-type template argument value '` :placeholder: `A` :diagtext: `' truncated to '` :placeholder: `B` :diagtext: `' for template parameter of type` |nbsp| :placeholder: `C` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wconversion-null
-----------------
Synonym for `-Wnull-conversion`_ .
2017-04-14 06:44:22 +08:00
-Wcoroutine
-----------
2017-10-27 05:06:52 +08:00
Synonym for `-Wcoroutine-missing-unhandled-exception`_ .
-Wcoroutine-missing-unhandled-exception
---------------------------------------
2017-04-14 06:44:22 +08:00
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is required to declare the member 'unhandled\_exception()' when exceptions are enabled` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wcovered-switch-default
------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `default label in switch which covers all enumeration values` |
+--------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wcpp
-----
Synonym for `-W#warnings`_ .
2016-09-12 13:58:29 +08:00
-Wcstring-format-directive
--------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using` |nbsp| :placeholder: `A` |nbsp| :diagtext: `directive in` |nbsp| |+--------------------+| |nbsp| :diagtext: `which is being passed as a formatting argument to the formatting` |nbsp| |+----------------------+|
| ||:diagtext: `NSString` || ||:diagtext: `method` ||
| |+--------------------+| |+----------------------+|
| ||:diagtext: `CFString` || ||:diagtext: `CFfunction` ||
| |+--------------------+| |+----------------------+|
+------------------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------------------------------------------------+------------------------+
-Wctor-dtor-privacy
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wcuda-compat
-------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute parameter` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is negative and will be ignored` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+---------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `nvcc does not allow '\_\_` :placeholder: `A` :diagtext: `\_\_' to appear after '()' in lambdas` |
+---------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignored 'inline' attribute on kernel function` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `kernel function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a member function; this may not be accepted by nvcc` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument to '#pragma unroll' should not be in parentheses in CUDA C/C++` |
+--------------------------------------------------------------------------------------------------------------+
-Wcustom-atomic-properties
--------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `atomic by default property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has a user defined` |nbsp| |+------------------+| |nbsp| :diagtext: `(property should be marked 'atomic' if this is intended)` |
| ||:diagtext: `getter` || |
| |+------------------+| |
| ||:diagtext: `setter` || |
| |+------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------+--------------------+----------------------------------------------------------------------------+
-Wdangling-else
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `add explicit braces to avoid dangling else` |
+---------------------------------------------------------------------------------+
-Wdangling-field
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `binding reference member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to stack allocated parameter` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `binding reference` |nbsp| |+--------------------------------+|:diagtext: `member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to a temporary value` |
| || || |
| |+--------------------------------+| |
| ||:diagtext: `subobject of` |nbsp| || |
| |+--------------------------------+| |
+----------------------------------------------------------------+----------------------------------+----------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initializing pointer member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with the stack address of parameter` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdangling-initializer-list
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------+---------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `array backing the initializer list will be destroyed at the end of` |nbsp| |+-------------------------------+|
| ||:diagtext: `the full-expression` ||
| |+-------------------------------+|
| ||:diagtext: `the constructor` ||
| |+-------------------------------+|
+-----------------------------------------------------------------------------------------------------------------+---------------------------------+
-Wdate-time
-----------
**Diagnostic text:**
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expansion of date or time macro is not reproducible` |
+------------------------------------------------------------------------------------------+
-Wdealloc-in-category
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `-dealloc is being overridden in a category` |
+---------------------------------------------------------------------------------+
-Wdebug-compression-unavailable
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot compress debug sections (zlib not installed)` |
+------------------------------------------------------------------------------------------+
-Wdeclaration-after-statement
-----------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C90 forbids mixing declarations and code` |
+-----------------------------------------------------------------------------------+
-Wdelegating-ctor-cycles
------------------------
This diagnostic is an error by default, but the flag `` -Wno-delegating-ctor-cycles `` can be used to disable the error.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `constructor for` |nbsp| :placeholder: `A` |nbsp| :diagtext: `creates a delegation cycle` |
+------------------------------------------------------------------------------------------------------------------------+
-Wdelete-incomplete
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot delete expression with pointer-to-'void' type` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `deleting pointer to incomplete type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `may cause undefined behavior` |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdelete-non-virtual-dtor
-------------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+----------------------+| |nbsp| :diagtext: `called on` |nbsp| :placeholder: `B` |nbsp| :diagtext: `that is abstract but has non-virtual destructor` |
| ||:diagtext: `delete` || |
| |+----------------------+| |
| ||:diagtext: `destructor` || |
| |+----------------------+| |
+---------------------------+------------------------+------------------------------------------------------------------------------------------------------------------------+
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+----------------------+| |nbsp| :diagtext: `called on non-final` |nbsp| :placeholder: `B` |nbsp| :diagtext: `that has virtual functions but non-virtual destructor` |
| ||:diagtext: `delete` || |
| |+----------------------+| |
| ||:diagtext: `destructor` || |
| |+----------------------+| |
+---------------------------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated
------------
Some of the diagnostics controlled by this flag are enabled by default.
2017-01-21 03:27:09 +08:00
Also controls `-Wdeprecated-attributes`_ , `-Wdeprecated-declarations`_ , `-Wdeprecated-dynamic-exception-spec`_ , `-Wdeprecated-increment-bool`_ , `-Wdeprecated-register`_ , `-Wdeprecated-writable-strings`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `-O4 is equivalent to -O3` |
+---------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `access declarations are deprecated; use using declarations instead` |
+---------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `definition of implicit copy` |nbsp| |+-------------------------------+| |nbsp| :diagtext: `for` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is deprecated because it has a user-declared` |nbsp| |+------------------------------------------------------------+|
| ||:diagtext: `constructor` || ||+------------------------+---------------------------------+||
| |+-------------------------------+| |||:diagtext: `copy` |nbsp| |+-------------------------------+|||
| ||:diagtext: `assignment operator` || ||| ||:diagtext: `assignment operator` ||||
| |+-------------------------------+| ||| |+-------------------------------+|||
| | | ||| ||:diagtext: `constructor` ||||
| | | ||| |+-------------------------------+|||
| | | ||+------------------------+---------------------------------+||
| | | |+------------------------------------------------------------+|
| | | ||:diagtext: `destructor` ||
| | | |+------------------------------------------------------------+|
+--------------------------------------------------------------------------+---------------------------------+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated` |
+-------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument '` :placeholder: `A` :diagtext: `' is deprecated, use '` :placeholder: `B` :diagtext: `' instead` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `treating '` :placeholder: `A` :diagtext: `' input as '` :placeholder: `B` :diagtext: `' when in C++ mode, this behavior is deprecated` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `OpenCL version` |nbsp| :placeholder: `A` |nbsp| :diagtext: `does not support the option '` :placeholder: `B` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `Use of 'long' with '\_\_vector' is deprecated` |
+------------------------------------------------------------------------------------+
-Wdeprecated-attributes
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `specifying vector types with the 'mode' attribute is deprecated; use the 'vector\_size' attribute instead` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-declarations
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `specifying 'uuid' as an ATL attribute is deprecated; use \_\_declspec instead` |
+--------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of C-style parameters in Objective-C method declarations is deprecated` |
+-----------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is deprecated` |
+----------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `may be deprecated because the receiver type is unknown` |
+---------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is deprecated:` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property access is using` |nbsp| :placeholder: `A` |nbsp| :diagtext: `method which is deprecated` |
+-------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wdeprecated-dynamic-exception-spec
-----------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `dynamic exception specifications are deprecated` |
+--------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wdeprecated-implementations
----------------------------
**Diagnostic text:**
+----------------------------------------------------------------------+----------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `implementing deprecated` |nbsp| |+--------------------+|
2016-09-12 13:58:29 +08:00
| ||:diagtext: `method` ||
| |+--------------------+|
| ||:diagtext: `class` ||
| |+--------------------+|
| ||:diagtext: `category` ||
| |+--------------------+|
+----------------------------------------------------------------------+----------------------+
2017-10-27 05:06:52 +08:00
+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implementing unavailable method` |
+----------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wdeprecated-increment-bool
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `incrementing expression of type bool is deprecated and incompatible with C++17` |
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-objc-isa-usage
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `assignment to Objective-C's isa is deprecated in favor of object\_setClass()` |
+-------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `direct access to Objective-C's isa is deprecated in favor of object\_getClass()` |
+----------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-objc-pointer-introspection
---------------------------------------
This diagnostic is enabled by default.
Also controls `-Wdeprecated-objc-pointer-introspection-performSelector`_ .
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `bitmasking for introspection of Objective-C object pointers is strongly discouraged` |
+--------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-objc-pointer-introspection-performSelector
-------------------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `bitmasking for introspection of Objective-C object pointers is strongly discouraged` |
+--------------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-register
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `'register' storage class specifier is deprecated and incompatible with C++17` |
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------+
-Wdeprecated-writable-strings
-----------------------------
Synonym for `-Wc++11-compat-deprecated-writable-strings`_ .
-Wdirect-ivar-access
--------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instance variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is being directly accessed` |
+------------------------------------------------------------------------------------------------------------------------------+
-Wdisabled-macro-expansion
--------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `disabled expansion of recursive macro` |
+----------------------------------------------------------------------------+
-Wdisabled-optimization
-----------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wdiscard-qual
--------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wdistributed-object-modifiers
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting distributed object modifiers on parameter type in implementation of` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting distributed object modifiers on return type in implementation of` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wdiv-by-zero
-------------
2016-09-14 09:51:10 +08:00
Synonym for `-Wdivision-by-zero`_ .
2016-09-12 13:58:29 +08:00
-Wdivision-by-zero
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-----------------------+----------------------------------------+
|:warning: `warning:` |nbsp| |+---------------------+| |nbsp| :diagtext: `by zero is undefined` |
| ||:diagtext: `remainder` || |
| |+---------------------+| |
| ||:diagtext: `division` || |
| |+---------------------+| |
+---------------------------+-----------------------+----------------------------------------+
-Wdll-attribute-on-redeclaration
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redeclaration of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `should not add` |nbsp| :placeholder: `B` |nbsp| :diagtext: `attribute` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wdllexport-explicit-instantiation-decl
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit instantiation declaration should not be 'dllexport'` |
+---------------------------------------------------------------------------------------------------+
-Wdllimport-static-field-def
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `definition of dllimport static field` |
+---------------------------------------------------------------------------+
-Wdocumentation
---------------
2016-09-14 09:55:42 +08:00
Also controls `-Wdocumentation-deprecated-sync`_ , `-Wdocumentation-html`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|+---------------------+|:diagtext: `' command should not be used in a comment attached to a non-` |+---------------------+| |nbsp| :diagtext: `declaration` |
| ||:diagtext: `\\` |||:diagtext: `class` || ||:diagtext: `class` || |
| |+--------------+|+---------------------+| |+---------------------+| |
| ||:diagtext: `@` |||:diagtext: `interface` || ||:diagtext: `interface` || |
| |+--------------+|+---------------------+| |+---------------------+| |
| | ||:diagtext: `protocol` || ||:diagtext: `protocol` || |
| | |+---------------------+| |+---------------------+| |
| | ||:diagtext: `struct` || ||:diagtext: `struct` || |
| | |+---------------------+| |+---------------------+| |
| | ||:diagtext: `union` || ||:diagtext: `union` || |
| | |+---------------------+| |+---------------------+| |
+----------------------------------------+----------------+-----------------------+------------------------------------------------------------------------+-----------------------+-------------------------------+
+-----------------------------------------------------------+----------------+-----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicated command '` |+--------------+|:placeholder: `B` :diagtext: `'` |
| ||:diagtext: `\\` || |
| |+--------------+| |
| ||:diagtext: `@` || |
| |+--------------+| |
+-----------------------------------------------------------+----------------+-----------------------------+
+------------------------------------------------------------------+----------------+-------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty paragraph passed to '` |+--------------+|:placeholder: `B` :diagtext: `' command` |
| ||:diagtext: `\\` || |
| |+--------------+| |
| ||:diagtext: `@` || |
| |+--------------+| |
+------------------------------------------------------------------+----------------+-------------------------------------+
+----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|+------------------------+|:diagtext: `' command should not be used in a comment attached to a non-container declaration` |
| ||:diagtext: `\\` |||:diagtext: `classdesign` || |
| |+--------------+|+------------------------+| |
| ||:diagtext: `@` |||:diagtext: `coclass` || |
| |+--------------+|+------------------------+| |
| | ||:diagtext: `dependency` || |
| | |+------------------------+| |
| | ||:diagtext: `helper` || |
| | |+------------------------+| |
| | ||:diagtext: `helperclass` || |
| | |+------------------------+| |
| | ||:diagtext: `helps` || |
| | |+------------------------+| |
| | ||:diagtext: `instancesize` || |
| | |+------------------------+| |
| | ||:diagtext: `ownership` || |
| | |+------------------------+| |
| | ||:diagtext: `performance` || |
| | |+------------------------+| |
| | ||:diagtext: `security` || |
| | |+------------------------+| |
| | ||:diagtext: `superclass` || |
| | |+------------------------+| |
+----------------------------------------+----------------+--------------------------+---------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|+-------------------------+|:diagtext: `' command should be used in a comment attached to` |nbsp| |+---------------------------------+| |nbsp| :diagtext: `declaration` |
| ||:diagtext: `\\` |||:diagtext: `function` || ||:diagtext: `a function` || |
| |+--------------+|+-------------------------+| |+---------------------------------+| |
| ||:diagtext: `@` |||:diagtext: `functiongroup` || ||:diagtext: `a function` || |
| |+--------------+|+-------------------------+| |+---------------------------------+| |
| | ||:diagtext: `method` || ||:diagtext: `an Objective-C method` || |
| | |+-------------------------+| |+---------------------------------+| |
| | ||:diagtext: `methodgroup` || ||:diagtext: `an Objective-C method` || |
| | |+-------------------------+| |+---------------------------------+| |
| | ||:diagtext: `callback` || ||:diagtext: `a pointer to function` || |
| | |+-------------------------+| |+---------------------------------+| |
+----------------------------------------+----------------+---------------------------+---------------------------------------------------------------------+-----------------------------------+-------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `HTML start tag prematurely ended, expected attribute name or '>'` |
+-------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected quoted string after equals sign` |
+-------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parameter '` :placeholder: `A` :diagtext: `' is already documented` |
+-----------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unrecognized parameter passing direction, valid directions are '\[in\]', '\[out\]' and '\[in,out\]'` |
+------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|:diagtext: `param' command used in a comment that is not attached to a function declaration` |
| ||:diagtext: `\\` || |
| |+--------------+| |
| ||:diagtext: `@` || |
| |+--------------+| |
+----------------------------------------+----------------+-------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parameter '` :placeholder: `A` :diagtext: `' not found in the function declaration` |
+---------------------------------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|:placeholder: `B` :diagtext: `' command used in a comment that is attached to a` |nbsp| |+-----------------------------------+|
| ||:diagtext: `\\` || ||:diagtext: `function returning void` ||
| |+--------------+| |+-----------------------------------+|
| ||:diagtext: `@` || ||:diagtext: `constructor` ||
| |+--------------+| |+-----------------------------------+|
| | | ||:diagtext: `destructor` ||
| | | |+-----------------------------------+|
| | | ||:diagtext: `method returning void` ||
| | | |+-----------------------------------+|
+----------------------------------------+----------------+-------------------------------------------------------------------------------------+-------------------------------------+
+----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|:placeholder: `B` :diagtext: `' command used in a comment that is not attached to a function or method declaration` |
| ||:diagtext: `\\` || |
| |+--------------+| |
| ||:diagtext: `@` || |
| |+--------------+| |
+----------------------------------------+----------------+----------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `template parameter '` :placeholder: `A` :diagtext: `' is already documented` |
+--------------------------------------------------------------------------------------------------------------+
+----------------------------------------+----------------+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|:diagtext: `tparam' command used in a comment that is not attached to a template declaration` |
| ||:diagtext: `\\` || |
| |+--------------+| |
| ||:diagtext: `@` || |
| |+--------------+| |
+----------------------------------------+----------------+--------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `template parameter '` :placeholder: `A` :diagtext: `' not found in the template declaration` |
+------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `not a Doxygen trailing comment` |
+---------------------------------------------------------------------+
+----------------------------------------+----------------+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+--------------+|:placeholder: `B` :diagtext: `' command does not terminate a verbatim text block` |
| ||:diagtext: `\\` || |
| |+--------------+| |
| ||:diagtext: `@` || |
| |+--------------+| |
+----------------------------------------+----------------+------------------------------------------------------------------------------+
-Wdocumentation-deprecated-sync
-------------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration is marked with '\\deprecated' command but does not have a deprecation attribute` |
+----------------------------------------------------------------------------------------------------------------------------------+
-Wdocumentation-html
--------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `HTML end tag '` :placeholder: `A` :diagtext: `' is forbidden` |
+-----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `HTML end tag does not match any start tag` |
+--------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `HTML tag '` :placeholder: `A` :diagtext: `' requires an end tag` |
+--------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `HTML start tag '` :placeholder: `A` :diagtext: `' closed by '` :placeholder: `B` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------------------------+
-Wdocumentation-pedantic
------------------------
Also controls `-Wdocumentation-unknown-command`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `whitespace is not allowed in parameter passing direction` |
+-----------------------------------------------------------------------------------------------+
-Wdocumentation-unknown-command
-------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown command tag name '` :placeholder: `A` :diagtext: `'; did you mean '` :placeholder: `B` :diagtext: `'?` |
+--------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown command tag name` |
+---------------------------------------------------------------+
-Wdollar-in-identifier-extension
--------------------------------
**Diagnostic text:**
+--------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'$' in identifier` |
+--------------------------------------------------------+
-Wdouble-promotion
------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion increases floating-point precision:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wduplicate-decl-specifier
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicate '` :placeholder: `A` :diagtext: `' declaration specifier` |
+-----------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicate '` :placeholder: `A` :diagtext: `' declaration specifier` |
+-----------------------------------------------------------------------------------------------------+
-Wduplicate-enum
----------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `element` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has been implicitly assigned` |nbsp| :placeholder: `B` |nbsp| :diagtext: `which another element has been assigned` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wduplicate-method-arg
----------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redeclaration of method parameter` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------------------------+
-Wduplicate-method-match
------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple declarations of method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `found and ignored` |
+-----------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wduplicate-protocol
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicate protocol definition of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is ignored` |
+-----------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wdynamic-class-memaccess
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
|:warning: `warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext: `this` |nbsp| :placeholder: `B` |nbsp| :diagtext: `call is a pointer to` |nbsp| |+--------------------------------------+|:diagtext: `dynamic class` |nbsp| :placeholder: `D` :diagtext: `; vtable pointer will be` |nbsp| |+-----------------------+|
| ||:diagtext: `destination for` || || || ||:diagtext: `overwritten` ||
| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+|
| ||:diagtext: `source of` || ||:diagtext: `class containing a` |nbsp| || ||:diagtext: `copied` ||
| |+-----------------------------+| |+--------------------------------------+| |+-----------------------+|
| ||:diagtext: `first operand of` || | | ||:diagtext: `moved` ||
| |+-----------------------------+| | | |+-----------------------+|
| ||:diagtext: `second operand of` || | | ||:diagtext: `compared` ||
| |+-----------------------------+| | | |+-----------------------+|
+---------------------------+-------------------------------+------------------------------------------------------------------------------------------------+----------------------------------------+---------------------------------------------------------------------------------------------+-------------------------+
2017-01-21 03:27:09 +08:00
-Wdynamic-exception-spec
------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wdeprecated-dynamic-exception-spec`_ .
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:error: `error:` |nbsp| :diagtext: `ISO C++17 does not allow dynamic exception specifications` |
2017-01-21 03:27:09 +08:00
+--------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Weffc++
--------
2016-09-14 09:51:10 +08:00
Synonym for `-Wnon-virtual-dtor`_ .
2016-09-12 13:58:29 +08:00
-Wembedded-directive
--------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `embedding a directive within macro arguments has undefined behavior` |
+----------------------------------------------------------------------------------------------------------+
-Wempty-body
------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `for loop has empty body` |
+--------------------------------------------------------------+
+------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `if statement has empty body` |
+------------------------------------------------------------------+
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `range-based for loop has empty body` |
+--------------------------------------------------------------------------+
+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `switch statement has empty body` |
+----------------------------------------------------------------------+
+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `while loop has empty body` |
+----------------------------------------------------------------+
-Wempty-decomposition
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `ISO C++17 does not allow a decomposition group to be empty` |
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------+
-Wempty-translation-unit
------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C requires a translation unit to contain at least one declaration` |
+------------------------------------------------------------------------------------------------------------+
-Wencode-type
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `encoding of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `type is incomplete because` |nbsp| :placeholder: `B` |nbsp| :diagtext: `component has unknown encoding` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wendif-labels
--------------
Synonym for `-Wextra-tokens`_ .
-Wenum-compare
--------------
This diagnostic is enabled by default.
2017-10-27 05:06:52 +08:00
Also controls `-Wenum-compare-switch`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of two values with different enumeration types` |
+------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wenum-compare-switch
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of two values with different enumeration types in switch statement` |
+--------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wenum-conversion
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from enumeration type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to different enumeration type` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wenum-too-large
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration values exceed range of largest integer` |
+-----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incremented enumerator value` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not representable in the largest integer type` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wexceptions
------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot refer to a non-static member from the handler of a` |nbsp| |+-----------------------+| |nbsp| :diagtext: `function try block` |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
| ||:diagtext: `destructor` || |
| |+-----------------------+| |
+--------------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will be caught by earlier handler` |
+-------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has a non-throwing exception specification but can still throw` |
+-----------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wexit-time-destructors
-----------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration requires an exit-time destructor` |
+-----------------------------------------------------------------------------------+
-Wexpansion-to-defined
----------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `macro expansion producing 'defined' has undefined behavior` |
+-------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `macro expansion producing 'defined' has undefined behavior` |
+-------------------------------------------------------------------------------------------------+
-Wexplicit-initialize-call
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit call to +initialize results in duplicate call to +initialize` |
+------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit call to \[super initialize\] should only be in implementation of +initialize` |
+----------------------------------------------------------------------------------------------------------------------------+
-Wexplicit-ownership-type
-------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method parameter of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with no explicit ownership` |
+-------------------------------------------------------------------------------------------------------------------------------------+
-Wextended-offsetof
-------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using extended field designator is an extension` |
+--------------------------------------------------------------------------------------+
-Wextern-c-compat
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
|:warning: `warning:` |nbsp| |+-------------------------+|+------------------+| |nbsp| :diagtext: `has size 0 in C,` |nbsp| |+-------------------------+| |nbsp| :diagtext: `in C++` |
| || |||:diagtext: `struct` || ||:diagtext: `size 1` || |
| |+-------------------------+|+------------------+| |+-------------------------+| |
| ||:diagtext: `empty` |nbsp| |||:diagtext: `union` || ||:diagtext: `non-zero size` || |
| |+-------------------------+|+------------------+| |+-------------------------+| |
+---------------------------+---------------------------+--------------------+--------------------------------------------+---------------------------+--------------------------+
-Wextern-initializer
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'extern' variable has an initializer` |
+---------------------------------------------------------------------------+
-Wextra
-------
Some of the diagnostics controlled by this flag are enabled by default.
2017-10-27 05:06:52 +08:00
Also controls `-Wignored-qualifiers`_ , `-Winitializer-overrides`_ , `-Wmissing-field-initializers`_ , `-Wmissing-method-return-type`_ , `-Wnull-pointer-arithmetic`_ , `-Wsemicolon-before-method-body`_ , `-Wsign-compare`_ , `-Wunused-parameter`_ .
2017-01-21 03:27:09 +08:00
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `call to function without interrupt attribute could clobber interruptee's VFP registers` |
+-----------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wextra-qualification
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra qualification on member` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------+
-Wextra-semi
------------
Also controls `-Wc++11-extra-semi`_ .
**Diagnostic text:**
+--------------------------------------------------------+------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra ';'` |nbsp| |+----------------------------------------------+|
| ||:diagtext: `outside of a function` ||
| |+----------------------------------------------+|
| ||+--------------------------------------------+||
| |||:diagtext: `inside a` |nbsp| :placeholder: `B` |||
| ||+--------------------------------------------+||
| |+----------------------------------------------+|
| ||:diagtext: `inside instance variable list` ||
| |+----------------------------------------------+|
| ||:diagtext: `after member function definition` ||
| |+----------------------------------------------+|
+--------------------------------------------------------+------------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra ';' after member function definition` |
+---------------------------------------------------------------------------------+
-Wextra-tokens
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra tokens at end of #` :placeholder: `A` |nbsp| :diagtext: `directive` |
+------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra tokens at the end of '#pragma omp` |nbsp| :placeholder: `A` :diagtext: `' are ignored` |
+-------------------------------------------------------------------------------------------------------------------------------+
-Wfallback
----------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `falling back to` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------+
-Wflag-enum
-----------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration value` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is out of range of flags in enumeration type` |nbsp| :placeholder: `B` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wflexible-array-extensions
---------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `may not be used as an array element due to flexible array member` |
+-------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `may not be nested in a struct due to flexible array member` |
+-------------------------------------------------------------------------------------------------------------------------+
-Wfloat-conversion
------------------
Also controls `-Wfloat-overflow-conversion`_ , `-Wfloat-zero-conversion`_ .
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion turns floating-point number into integer:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wfloat-equal
-------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparing floating point with == or != is unsafe` |
+---------------------------------------------------------------------------------------+
-Wfloat-overflow-conversion
---------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion of out of range value from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `changes value from` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to` |nbsp| :placeholder: `D` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wfloat-zero-conversion
-----------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `changes non-zero value from` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to` |nbsp| :placeholder: `D` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wfor-loop-analysis
-------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is` |nbsp| |+-----------------------+| |nbsp| :diagtext: `both in the loop header and in the loop body` |
| ||:diagtext: `decremented` || |
| |+-----------------------+| |
| ||:diagtext: `incremented` || |
| |+-----------------------+| |
+-----------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------+
+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable` |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |nbsp| :diagtext: `used in loop condition not modified in loop body` |
| ||:diagtext: `s` || |
| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| ||+------------------------+ || |
| ||| |nbsp| :placeholder: `B` | || |
| ||+------------------------+ || |
| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| ||+------------------------------------------------------------------------------------+ || |
| |||:diagtext: `s` |nbsp| :placeholder: `B` |nbsp| :diagtext: `and` |nbsp| :placeholder: `C` | || |
| ||+------------------------------------------------------------------------------------+ || |
| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| ||+-------------------------------------------------------------------------------------------------------------------+ || |
| |||:diagtext: `s` |nbsp| :placeholder: `B` :diagtext: `,` |nbsp| :placeholder: `C` :diagtext: `, and` |nbsp| :placeholder: `D` | || |
| ||+-------------------------------------------------------------------------------------------------------------------+ || |
| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
| ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
| |||:diagtext: `s` |nbsp| :placeholder: `B` :diagtext: `,` |nbsp| :placeholder: `C` :diagtext: `,` |nbsp| :placeholder: `D` :diagtext: `, and` |nbsp| :placeholder: `E` ||| |
| ||+--------------------------------------------------------------------------------------------------------------------------------------------------------+|| |
| |+----------------------------------------------------------------------------------------------------------------------------------------------------------+| |
+-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------+
-Wformat
--------
This diagnostic is enabled by default.
2016-09-14 09:55:42 +08:00
Also controls `-Wformat-extra-args`_ , `-Wformat-invalid-specifier`_ , `-Wformat-security`_ , `-Wformat-y2k`_ , `-Wformat-zero-length`_ , `-Wnonnull`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using '%%P' format specifier without precision` |
+-------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------------------+| |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' should not be used as format arguments; add an explicit cast to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `instead` |
| ||:diagtext: `values of type` || |
| |+--------------------------------------------+| |
| ||:diagtext: `enum values with underlying type` || |
| |+--------------------------------------------+| |
+---------------------------+----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format specifies type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder: `B` |
| ||:diagtext: `type` || |
| |+---------------------------+| |
| ||:diagtext: `underlying type` || |
| |+---------------------------+| |
+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
2017-01-21 03:27:09 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using '` :placeholder: `A` :diagtext: `' format specifier annotation outside of os\_log()/os\_trace()` |
+----------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------+-----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid position specified for` |nbsp| |+---------------------------+|
| ||:diagtext: `field width` ||
| |+---------------------------+|
| ||:diagtext: `field precision` ||
| |+---------------------------+|
+-----------------------------------------------------------------------------+-----------------------------+
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot mix positional and non-positional arguments in format string` |
+----------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `length modifier '` :placeholder: `A` :diagtext: `' results in undefined behavior or no effect with '` :placeholder: `B` :diagtext: `' conversion specifier` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string should not be a wide string` |
+--------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `position arguments in format strings start counting at 1 (not 0)` |
+-------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string missing` |
+------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `object format flags cannot be used with '` :placeholder: `A` :diagtext: `' conversion specifier` |
+----------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` |+---------------+|:diagtext: `' specified field` |nbsp| |+---------------------+| |nbsp| :diagtext: `is missing a matching 'int' argument` |
| ||:diagtext: `\*` || ||:diagtext: `width` || |
| |+---------------+| |+---------------------+| |
| ||:diagtext: `.\*` || ||:diagtext: `precision` || |
| |+---------------+| |+---------------------+| |
+----------------------------------------+-----------------+-------------------------------------+-----------------------+--------------------------------------------------------+
+----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `field` |nbsp| |+---------------------+| |nbsp| :diagtext: `should have type` |nbsp| :placeholder: `B` :diagtext: `, but argument has type` |nbsp| :placeholder: `C` |
| ||:diagtext: `width` || |
| |+---------------------+| |
| ||:diagtext: `precision` || |
| |+---------------------+| |
+----------------------------------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing object format flag` |
+-----------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string contains '\\0' within the string body` |
+------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string is not null-terminated` |
+---------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flag '` :placeholder: `A` :diagtext: `' is ignored when flag '` :placeholder: `B` :diagtext: `' is present` |
+-----------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incomplete format specifier` |
+------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `more '%%' conversions than data arguments` |
+--------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' is not a valid object format flag` |
+-------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flag '` :placeholder: `A` :diagtext: `' results in undefined behavior with '` :placeholder: `B` :diagtext: `' conversion specifier` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-----------------------+| |nbsp| :diagtext: `used with '` :placeholder: `B` :diagtext: `' conversion specifier, resulting in undefined behavior` |
| ||:diagtext: `field width` || |
| |+-----------------------+| |
| ||:diagtext: `precision` || |
| |+-----------------------+| |
+---------------------------+-------------------------+------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `data argument position '` :placeholder: `A` :diagtext: `' exceeds the number of data arguments (` :placeholder: `B` :diagtext: `)` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `zero field width in scanf format string is unused` |
+----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no closing '\]' for '%%\[' in scanf format string` |
+----------------------------------------------------------------------------------------+
-Wformat-extra-args
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `data argument not used by format string` |
+------------------------------------------------------------------------------+
-Wformat-invalid-specifier
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid conversion specifier '` :placeholder: `A` :diagtext: `'` |
+--------------------------------------------------------------------------------------------------+
-Wformat-non-iso
----------------
**Diagnostic text:**
+-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `'` |nbsp| |+--------------------------------+| |nbsp| :diagtext: `is not supported by ISO C` |
| ||:diagtext: `length modifier` || |
| |+--------------------------------+| |
| ||:diagtext: `conversion specifier` || |
| |+--------------------------------+| |
+-----------------------------------------------------------------------------+----------------------------------+---------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using length modifier '` :placeholder: `A` :diagtext: `' with conversion specifier '` :placeholder: `B` :diagtext: `' is not supported by ISO C` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `positional arguments are not supported by ISO C` |
+--------------------------------------------------------------------------------------+
-Wformat-nonliteral
-------------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string is not a string literal` |
+----------------------------------------------------------------------------+
-Wformat-pedantic
-----------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format specifies type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `but the argument has` |nbsp| |+---------------------------+| |nbsp| :placeholder: `B` |
| ||:diagtext: `type` || |
| |+---------------------------+| |
| ||:diagtext: `underlying type` || |
| |+---------------------------+| |
+------------------------------------------------------------------------------------------------------------------------------------+-----------------------------+------------------------+
-Wformat-security
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string is not a string literal (potentially insecure)` |
+---------------------------------------------------------------------------------------------------+
-Wformat-y2k
------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wformat-zero-length
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `format string is empty` |
+-------------------------------------------------------------+
-Wformat=2
----------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wformat-nonliteral`_ , `-Wformat-security`_ , `-Wformat-y2k`_ .
-Wfour-char-constants
---------------------
**Diagnostic text:**
+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multi-character character constant` |
+-------------------------------------------------------------------------+
-Wframe-larger-than=
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `stack frame size of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `bytes in` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------+
-Wfunction-def-in-objc-container
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function definition inside an Objective-C container is deprecated` |
+--------------------------------------------------------------------------------------------------------+
-Wfuture-compat
---------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wgcc-compat
------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'diagnose\_if' is a clang extension` |
+--------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'enable\_if' is a clang extension` |
+------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_final is a GNU extension, consider using C++11 final` |
+-----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `GCC does not allow` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute in this position on a function definition` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'break' is bound to loop, GCC binds it to switch` |
+---------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `GCC does not allow an attribute in this position on a function declaration` |
+-----------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' is bound to current loop, GCC binds it to the enclosing loop` |
+----------------------------------------------------------------------------------------------------------------------------------+
-Wglobal-constructors
---------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration requires a global constructor` |
+--------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration requires a global destructor` |
+-------------------------------------------------------------------------------+
-Wgnu
-----
Some of the diagnostics controlled by this flag are enabled by default.
2016-09-14 09:55:42 +08:00
Controls `-Wgnu-alignof-expression`_ , `-Wgnu-anonymous-struct`_ , `-Wgnu-auto-type`_ , `-Wgnu-binary-literal`_ , `-Wgnu-case-range`_ , `-Wgnu-complex-integer`_ , `-Wgnu-compound-literal-initializer`_ , `-Wgnu-conditional-omitted-operand`_ , `-Wgnu-designator`_ , `-Wgnu-empty-initializer`_ , `-Wgnu-empty-struct`_ , `-Wgnu-flexible-array-initializer`_ , `-Wgnu-flexible-array-union-member`_ , `-Wgnu-folding-constant`_ , `-Wgnu-imaginary-constant`_ , `-Wgnu-include-next`_ , `-Wgnu-label-as-value`_ , `-Wgnu-redeclared-enum`_ , `-Wgnu-statement-expression`_ , `-Wgnu-static-float-init`_ , `-Wgnu-string-literal-operator-template`_ , `-Wgnu-union-cast`_ , `-Wgnu-variable-sized-type-not-at-end`_ , `-Wgnu-zero-line-directive`_ , `-Wgnu-zero-variadic-macro-arguments`_ , `-Wredeclared-class-member`_ , `-Wvla-extension`_ , `-Wzero-length-array`_ .
2016-09-12 13:58:29 +08:00
-Wgnu-alignof-expression
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `applied to an expression is a GNU extension` |
+----------------------------------------------------------------------------------------------------------+
-Wgnu-anonymous-struct
----------------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `anonymous structs are a GNU extension` |
+----------------------------------------------------------------------------+
-Wgnu-array-member-paren-init
-----------------------------
This diagnostic is an error by default, but the flag `` -Wno-gnu-array-member-paren-init `` can be used to disable the error.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `parenthesized initialization of a member array is a GNU extension` |
+----------------------------------------------------------------------------------------------------+
-Wgnu-auto-type
---------------
**Diagnostic text:**
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'\_\_auto\_type' is a GNU extension` |
+--------------------------------------------------------------------------+
-Wgnu-binary-literal
--------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `binary integer literals are a GNU extension` |
+----------------------------------------------------------------------------------+
-Wgnu-case-range
----------------
**Diagnostic text:**
+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU case range extension` |
+----------------------------------------------------------------------+
-Wgnu-complex-integer
---------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `complex integer types are a GNU extension` |
+--------------------------------------------------------------------------------+
-Wgnu-compound-literal-initializer
----------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initialization of an array` |nbsp| :diagtext: `from a compound literal` |nbsp| :diagtext: `is a GNU extension` |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
-Wgnu-conditional-omitted-operand
---------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU ?: conditional expression extension, omitting middle operand` |
+--------------------------------------------------------------------------------------------------------------+
-Wgnu-designator
----------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU array range extension` |
+-----------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU 'missing =' extension in designator` |
+-------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU old-style field designator extension` |
+--------------------------------------------------------------------------------------+
-Wgnu-empty-initializer
-----------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU empty initializer extension` |
+-----------------------------------------------------------------------------+
-Wgnu-empty-struct
------------------
**Diagnostic text:**
+----------------------------------------------------+--------------------+--------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty` |nbsp| |+------------------+| |nbsp| :diagtext: `is a GNU extension` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
+----------------------------------------------------+--------------------+--------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext: `is a GNU extension` |
| ||:diagtext: `struct` || |
| |+---------------------+| |
| ||:diagtext: `interface` || |
| |+---------------------+| |
| ||:diagtext: `union` || |
| |+---------------------+| |
| ||:diagtext: `class` || |
| |+---------------------+| |
| ||:diagtext: `enum` || |
| |+---------------------+| |
+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------+
+---------------------------+--------------------+------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+------------------+| |nbsp| :diagtext: `without named members is a GNU extension` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
+---------------------------+--------------------+------------------------------------------------------------+
-Wgnu-flexible-array-initializer
--------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array initialization is a GNU extension` |
+---------------------------------------------------------------------------------------+
-Wgnu-flexible-array-union-member
---------------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in a union is a GNU extension` |
+-------------------------------------------------------------------------------------------------------------------------------------+
-Wgnu-folding-constant
----------------------
**Diagnostic text:**
+-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression is not an` |nbsp| |+--------------------+| |nbsp| :diagtext: `constant expression; folding it to a constant is a GNU extension` |
| ||:diagtext: `integer` || |
| |+--------------------+| |
| ||:diagtext: `integral` || |
| |+--------------------+| |
+-------------------------------------------------------------------+----------------------+------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable length array folded to constant array as an extension` |
+-----------------------------------------------------------------------------------------------------+
-Wgnu-imaginary-constant
------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `imaginary constants are a GNU extension` |
+------------------------------------------------------------------------------+
-Wgnu-include-next
------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#include\_next is a language extension` |
+-----------------------------------------------------------------------------+
-Wgnu-label-as-value
--------------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU address-of-label extension` |
+----------------------------------------------------------------------------+
+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU indirect-goto extension` |
+-------------------------------------------------------------------------+
-Wgnu-redeclared-enum
---------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redeclaration of already-defined enum` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a GNU extension` |
+------------------------------------------------------------------------------------------------------------------------------------------+
-Wgnu-statement-expression
--------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU statement expression extension` |
+--------------------------------------------------------------------------------+
-Wgnu-static-float-init
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `in-class initializer for static data member of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a GNU extension` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wgnu-string-literal-operator-template
--------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `string literal operator templates are a GNU extension` |
+--------------------------------------------------------------------------------------------+
-Wgnu-union-cast
----------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast to union type is a GNU extension` |
+----------------------------------------------------------------------------+
-Wgnu-variable-sized-type-not-at-end
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with variable sized type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `not at the end of a struct or class is a GNU extension` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wgnu-zero-line-directive
-------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#line directive with zero argument is a GNU extension` |
+--------------------------------------------------------------------------------------------+
-Wgnu-zero-variadic-macro-arguments
-----------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `must specify at least one argument for '...' parameter of variadic macro` |
+---------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `token pasting of ',' and \_\_VA\_ARGS\_\_ is a GNU extension` |
+---------------------------------------------------------------------------------------------------+
-Wheader-guard
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is used as a header guard here, followed by #define of a different macro` |
+---------------------------------------------------------------------------------------------------------------------------------------+
-Wheader-hygiene
----------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using namespace directive in global context in header` |
+--------------------------------------------------------------------------------------------+
-Widiomatic-parentheses
-----------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using the result of an assignment as a condition without parentheses` |
+-----------------------------------------------------------------------------------------------------------+
-Wignored-attributes
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-----------------+| |nbsp| :diagtext: `will always resolve to` |nbsp| :placeholder: `A` |nbsp| :diagtext: `even if weak definition of` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is overridden` |
| ||:diagtext: `alias` || |
| |+-----------------+| |
| ||:diagtext: `ifunc` || |
| |+-----------------+| |
+---------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+
|:warning: `warning:` |nbsp| |+-----------------+| |nbsp| :diagtext: `will not be in section '` :placeholder: `A` :diagtext: `' but in the same section as the` |nbsp| |+--------------------+|
| ||:diagtext: `alias` || ||:diagtext: `aliasee` ||
| |+-----------------+| |+--------------------+|
| ||:diagtext: `ifunc` || ||:diagtext: `resolver` ||
| |+-----------------+| |+--------------------+|
+---------------------------+-------------------+----------------------------------------------------------------------------------------------------------------+----------------------+
+----------------------------------------------------------------------+------------------------+-------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'abi\_tag' attribute on` |nbsp| |+----------------------+| |nbsp| :diagtext: `namespace ignored` |
| ||:diagtext: `non-inline` || |
| |+----------------------+| |
| ||:diagtext: `anonymous` || |
| |+----------------------+| |
+----------------------------------------------------------------------+------------------------+-------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `after definition is ignored` |
+-----------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute can only be applied to instance variables or properties` |
+--------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute ignored` |
+--------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute ignored for field of type` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute ignored on inline function` |
+---------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' attribute cannot be specified on a definition` |
+-------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `ignored, because it is not attached to a declaration` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'nonnull' attribute applied to function with no pointer arguments` |
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'nonnull' attribute when used on parameters takes no arguments` |
+-----------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute ignored when parsing type` |
+--------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to a pointer or reference (` :placeholder: `B` |nbsp| :diagtext: `is invalid)` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to` |+----------------------------+| |nbsp| :diagtext: `pointer arguments` |
| || || |
| |+----------------------------+| |
| || |nbsp| :diagtext: `constant` || |
| |+----------------------------+| |
+----------------------------------------------------------------------------------------+------------------------------+-------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute declaration must precede definition` |
+------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to return values that are pointers` |
+------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to return values that are pointers or references` |
+--------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'sentinel' attribute requires named arguments` |
+------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+-----------------------+
|:warning: `warning:` |nbsp| :diagtext: `'sentinel' attribute only supported for variadic` |nbsp| |+---------------------+|
| ||:diagtext: `functions` ||
| |+---------------------+|
| ||:diagtext: `blocks` ||
| |+---------------------+|
+-----------------------------------------------------------------------------------------------+-----------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute argument not supported:` |nbsp| :placeholder: `B` |
+------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown visibility` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot be applied to` |nbsp| |+------------------------------+| |nbsp| :diagtext: `without return value` |
| ||:diagtext: `functions` || |
| |+------------------------------+| |
| ||:diagtext: `Objective-C method` || |
| |+------------------------------+| |
+------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_weak attribute cannot be specified on a field declaration` |
+----------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_weak attribute cannot be specified on an automatic variable when ARC is not enabled` |
+------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to` |nbsp| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `unions` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables and functions` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2017-01-21 03:27:09 +08:00
| ||:diagtext: `functions and global variables` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2016-09-12 13:58:29 +08:00
| ||:diagtext: `functions, variables, and Objective-C interfaces` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions and methods` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `parameters` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions, methods and blocks` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions, methods, and classes` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions, methods, and parameters` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2017-01-21 03:27:09 +08:00
| ||:diagtext: `functions, methods, and global variables` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2016-09-12 13:58:29 +08:00
| ||:diagtext: `classes` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `enums` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `methods` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `fields and global variables` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `structs` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `parameters and typedefs` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables and typedefs` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `thread-local variables` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables and fields` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables, data members and tag types` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `types and namespaces` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `Objective-C interfaces` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `methods and properties` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2017-10-27 05:06:52 +08:00
| ||:diagtext: `functions, methods, and properties` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2016-09-12 13:58:29 +08:00
| ||:diagtext: `struct or union` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `struct, union or class` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `types` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `Objective-C instance methods` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `init methods of interface or class extension declarations` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables, functions and classes` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions, variables, classes, and Objective-C interfaces` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `Objective-C protocols` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2016-09-14 09:51:10 +08:00
| ||:diagtext: `variables with static or thread storage duration` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2017-01-21 03:27:09 +08:00
| ||:diagtext: `functions, methods, properties, and global variables` ||
2016-09-12 13:58:29 +08:00
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `structs, unions, and typedefs` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `structs and typedefs` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `interface or protocol declarations` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `kernel functions` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `non-K&R-style functions` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables, enums, fields and typedefs` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `functions, methods, enums, and classes` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `structs, classes, variables, functions, and inline namespaces` ||
| |+----------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2017-01-21 03:27:09 +08:00
| ||:diagtext: `classes and enumerations` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2017-04-14 06:44:22 +08:00
| ||:diagtext: `named declarations` ||
| |+----------------------------------------------------------------------------------------------------------------+|
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `ignored, because it cannot be applied to omitted return type` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `calling convention` |nbsp| :placeholder: `A` |nbsp| :diagtext: `ignored for this target` |
+----------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `calling convention ignored on constructor/destructor` |
+-------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `calling convention ignored on variadic function` |
+--------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `ignored, because it cannot be applied to a type` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is ignored, place it after "` |+---------------------+|:diagtext: `" to apply attribute to type declaration` |
| ||:diagtext: `class` || |
| |+---------------------+| |
| ||:diagtext: `struct` || |
| |+---------------------+| |
| ||:diagtext: `interface` || |
| |+---------------------+| |
| ||:diagtext: `union` || |
| |+---------------------+| |
| ||:diagtext: `enum` || |
| |+---------------------+| |
+------------------------------------------------------------------------------------------------------------------------+-----------------------+----------------------------------------------------+
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'deprecated' attribute on anonymous namespace ignored` |
+--------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `redeclared inline;` |nbsp| :placeholder: `B` |nbsp| :diagtext: `attribute ignored` |
+----------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is already applied with different parameters` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is already applied` |
+--------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `Objective-C GC does not allow weak variables on the stack` |
+------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'gnu\_inline' attribute requires function to be marked 'inline', attribute ignored` |
+-------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------+------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `inheritance model ignored on` |nbsp| |+----------------------------------+|
| ||:diagtext: `primary template` ||
| |+----------------------------------+|
| ||:diagtext: `partial specialization` ||
| |+----------------------------------+|
+---------------------------------------------------------------------------+------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'internal\_linkage' attribute on a non-static local variable is ignored` |
+--------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `qualifiers after comma in declarator list are ignored` |
+--------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+----------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `MIPS 'interrupt' attribute only applies to functions that have` |nbsp| |+--------------------------------+|
| ||:diagtext: `no parameters` ||
| |+--------------------------------+|
| ||:diagtext: `a 'void' return type` ||
| |+--------------------------------+|
+-------------------------------------------------------------------------------------------------------------+----------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown attribute '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to` |nbsp| |+---------------------------------+| |nbsp| :diagtext: `parameters` |
| ||:diagtext: `Objective-C object` || |
| |+---------------------------------+| |
| ||:diagtext: `pointer` || |
| |+---------------------------------+| |
| ||:diagtext: `pointer-to-CF-pointer` || |
| |+---------------------------------+| |
+------------------------------------------------------------------------------------------------+-----------------------------------+------------------------------+
+------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute only applies to` |nbsp| |+----------------------+| |nbsp| :diagtext: `that return` |nbsp| |+------------------------------------+|
| ||:diagtext: `functions` || ||:diagtext: `an Objective-C object` ||
| |+----------------------+| |+------------------------------------+|
| ||:diagtext: `methods` || ||:diagtext: `a pointer` ||
| |+----------------------+| |+------------------------------------+|
| ||:diagtext: `properties` || ||:diagtext: `a non-retainable pointer` ||
| |+----------------------+| |+------------------------------------+|
+------------------------------------------------------------------------------------------------+------------------------+---------------------------------------+--------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute is deprecated and ignored in OpenCL version` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+---------------------+| |nbsp| :diagtext: `of field` |nbsp| :placeholder: `B` |nbsp| :diagtext: `(` :placeholder: `C` |nbsp| :diagtext: `bits) does not match the` |nbsp| |+---------------------+| |nbsp| :diagtext: `of the first field in transparent union; transparent\_union attribute ignored` |
| ||:diagtext: `alignment` || ||:diagtext: `alignment` || |
| |+---------------------+| |+---------------------+| |
| ||:diagtext: `size` || ||:diagtext: `size` || |
| |+---------------------+| |+---------------------+| |
+---------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `first field of a transparent union cannot have` |nbsp| |+--------------------------+| |nbsp| :diagtext: `type` |nbsp| :placeholder: `B` :diagtext: `; transparent\_union attribute ignored` |
| ||:diagtext: `floating point` || |
| |+--------------------------+| |
| ||:diagtext: `vector` || |
| |+--------------------------+| |
+---------------------------------------------------------------------------------------------+----------------------------+--------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `transparent\_union attribute can only be applied to a union definition; attribute ignored` |
+--------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `transparent union definition must contain at least one field; transparent\_union attribute ignored` |
+-----------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' only applies to` |nbsp| |+-----------------------------------------------+| |nbsp| :diagtext: `types; type here is` |nbsp| :placeholder: `C` |
| ||:diagtext: `function` || |
| |+-----------------------------------------------+| |
| ||:diagtext: `pointer` || |
| |+-----------------------------------------------+| |
| ||:diagtext: `Objective-C object or block pointer` || |
| |+-----------------------------------------------+| |
+---------------------------------------------------------------------------------------------+-------------------------------------------------+---------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_declspec attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not supported` |
+-------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+-------------------------------------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring` |nbsp| |+-----------------------+|+--------------------------------+| |nbsp| :diagtext: `'` :placeholder: `C` :diagtext: `' in the target attribute string` |
| ||:diagtext: `unsupported` ||| || |
| |+-----------------------+|+--------------------------------+| |
| ||:diagtext: `duplicate` ||| |nbsp| :diagtext: `architecture` || |
| |+-----------------------+|+--------------------------------+| |
+-------------------------------------------------------+-------------------------+----------------------------------+---------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wignored-optimization-argument
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `optimization flag '` :placeholder: `A` :diagtext: `' is not supported for target '` :placeholder: `B` :diagtext: `'` |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `optimization flag '` :placeholder: `A` :diagtext: `' is not supported` |
+--------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wignored-pragma-intrinsic
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not a recognized builtin` |+----------------------------------------------------------------------------+|
| || ||
| |+----------------------------------------------------------------------------+|
| ||:diagtext: `; consider including <intrin.h> to access non-builtin intrinsics` ||
| |+----------------------------------------------------------------------------+|
+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wignored-pragmas
-----------------
This diagnostic is enabled by default.
2017-01-21 03:27:09 +08:00
Also controls `-Wignored-pragma-intrinsic`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+------------------------------------------------------------------------------+---------------------------+-----------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected '=' following '#pragma` |nbsp| |+-------------------------+|:diagtext: `' - ignored` |
| ||:diagtext: `align` || |
| |+-------------------------+| |
| ||:diagtext: `options align` || |
| |+-------------------------+| |
+------------------------------------------------------------------------------+---------------------------+-----------------------+
+-----------------------------------------------------------------------------------+---------------------------+-----------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid alignment option in '#pragma` |nbsp| |+-------------------------+|:diagtext: `' - ignored` |
| ||:diagtext: `align` || |
| |+-------------------------+| |
| ||:diagtext: `options align` || |
| |+-------------------------+| |
+-----------------------------------------------------------------------------------+---------------------------+-----------------------+
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `OpenCL extension end directive mismatches begin directive - ignoring` |
+-----------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'#pragma comment` |nbsp| :placeholder: `A` :diagtext: `' ignored` |
+----------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing argument to debug command '` :placeholder: `A` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unexpected debug command '` :placeholder: `A` :diagtext: `'` |
+----------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected action or ')' in '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing ':' after` |nbsp| :placeholder: `A` |nbsp| :diagtext: `- ignoring` |
+--------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing ':' or ')' after` |nbsp| :placeholder: `A` |nbsp| :diagtext: `- ignoring` |
+---------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected identifier in '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+---------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected 'compiler', 'lib', 'user', or a string literal for the section name in '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected integer between` |nbsp| :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` |nbsp| :diagtext: `inclusive in '#pragma` |nbsp| :placeholder: `C` :diagtext: `' - ignored` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing '(' after '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignoring` |
+-----------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected non-wide string literal in '#pragma` |nbsp| :placeholder: `A` :diagtext: `'` |
+------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+-------------------------------------------------------+---------------------------------------------------+------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected` |nbsp| |+-------------------------------------------------+| |nbsp| :diagtext: `- ignoring` |
| ||:diagtext: `'enable', 'disable', 'begin' or 'end'` || |
| |+-------------------------------------------------+| |
| ||:diagtext: `'disable'` || |
| |+-------------------------------------------------+| |
+-------------------------------------------------------+---------------------------------------------------+------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected ')' or ',' in '#pragma` |nbsp| :placeholder: `A` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing ')' after '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignoring` |
+-----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected a stack label or a string literal for the section name in '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected a string literal for the section name in '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected push, pop or a string literal for the section name in '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra tokens at end of '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+---------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incorrect use of #pragma clang force\_cuda\_host\_device begin\|end` |
+----------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'#pragma init\_seg' is only supported when targeting a Microsoft environment` |
+-------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown action for '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+-----------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown action '` :placeholder: `B` :diagtext: `' for '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incorrect use of '#pragma ms\_struct on\|off' - ignored` |
+----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma options align=reset failed:` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected 'align' following '#pragma options' - ignored` |
+---------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected #pragma pack parameter to be '1', '2', '4', '8', or '16'` |
+--------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected integer or identifier in '#pragma pack' - ignored` |
+-------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma` |nbsp| :placeholder: `A` :diagtext: `(pop, ...) failed:` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma pop\_macro could not pop '` :placeholder: `A` :diagtext: `', no matching push\_macro` |
+------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown OpenCL extension` |nbsp| :placeholder: `A` |nbsp| :diagtext: `- ignoring` |
+---------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `known but unsupported action '` :placeholder: `B` :diagtext: `' for '#pragma` |nbsp| :placeholder: `A` :diagtext: `' - ignored` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unsupported OpenCL extension` |nbsp| :placeholder: `A` |nbsp| :diagtext: `- ignoring` |
+-------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected '#pragma unused' argument to be a variable name` |
+-----------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `only variables can be arguments to '#pragma unused'` |
+------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `undeclared variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `used as an argument for '#pragma unused'` |
+----------------------------------------------------------------------------------------------------------------------------------------------+
-Wignored-qualifiers
--------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+--------------------------------------------------+------------------------------------+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ARC` |nbsp| |+----------------------------------+| |nbsp| :diagtext: `lifetime qualifier on return type is ignored` |
| ||:diagtext: `unused` || |
| |+----------------------------------+| |
| ||:diagtext: `\_\_unsafe\_unretained` || |
| |+----------------------------------+| |
| ||:diagtext: `\_\_strong` || |
| |+----------------------------------+| |
| ||:diagtext: `\_\_weak` || |
| |+----------------------------------+| |
| ||:diagtext: `\_\_autoreleasing` || |
| |+----------------------------------+| |
+--------------------------------------------------+------------------------------------+----------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' qualifier on omitted return type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `has no effect` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' type qualifier` |+-------------+| |nbsp| :diagtext: `on return type` |nbsp| |+-----------------+| |nbsp| :diagtext: `no effect` |
| || || ||:diagtext: `:has` || |
| |+-------------+| |+-----------------+| |
| ||:diagtext: `s` || ||:diagtext: `:have` || |
| |+-------------+| |+-----------------+| |
+------------------------------------------------------------------------------------+---------------+------------------------------------------+-------------------+-----------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' qualifier on function type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `has no effect` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' qualifier on reference type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `has no effect` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wimplicit
----------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wimplicit-function-declaration`_ , `-Wimplicit-int`_ .
-Wimplicit-atomic-properties
----------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property is assumed atomic when auto-synthesizing the property` |
+-----------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property is assumed atomic by default` |
+----------------------------------------------------------------------------+
-Wimplicit-conversion-floating-point-to-bool
--------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion turns floating-point number into bool:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wimplicit-exception-spec-mismatch
----------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function previously declared with an` |nbsp| |+--------------------+| |nbsp| :diagtext: `exception specification redeclared with an` |nbsp| |+--------------------+| |nbsp| :diagtext: `exception specification` |
| ||:diagtext: `explicit` || ||:diagtext: `implicit` || |
| |+--------------------+| |+--------------------+| |
| ||:diagtext: `implicit` || ||:diagtext: `explicit` || |
| |+--------------------+| |+--------------------+| |
+-----------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------+----------------------+-------------------------------------------+
-Wimplicit-fallthrough
----------------------
Also controls `-Wimplicit-fallthrough-per-function`_ .
**Diagnostic text:**
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `fallthrough annotation in unreachable code` |
+---------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unannotated fall-through between switch labels` |
+-------------------------------------------------------------------------------------+
-Wimplicit-fallthrough-per-function
-----------------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unannotated fall-through between switch labels in partly-annotated function` |
+------------------------------------------------------------------------------------------------------------------+
-Wimplicit-function-declaration
-------------------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------+--------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit declaration of function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is invalid in` |nbsp| |+------------------+|
| ||:diagtext: `C99` ||
| |+------------------+|
| ||:diagtext: `OpenCL` ||
| |+------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------+--------------------+
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicitly declaring library function '` :placeholder: `A` :diagtext: `' with type` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `use of unknown builtin` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit declaration of function` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------+
-Wimplicit-int
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type specifier missing, defaults to 'int'` |
+--------------------------------------------------------------------------------+
-Wimplicit-retain-self
----------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior` |
+---------------------------------------------------------------------------------------------------------------------------------------+
-Wimplicitly-unsigned-literal
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `integer literal is too large to be represented in a signed integer type, interpreting as unsigned` |
+----------------------------------------------------------------------------------------------------------------------------------------+
-Wimport
--------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wimport-preprocessor-directive-pedantic
----------------------------------------
**Diagnostic text:**
+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#import is a language extension` |
+----------------------------------------------------------------------+
-Winaccessible-base
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `direct base` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is inaccessible due to ambiguity:` :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
-Winclude-next-absolute-path
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#include\_next with absolute path` |
+------------------------------------------------------------------------+
-Winclude-next-outside-header
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#include\_next in primary source file` |
+----------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wincompatible-exception-spec
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------+----------------------+--------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception specifications of` |nbsp| |+--------------------+| |nbsp| :diagtext: `types differ` |
| ||:diagtext: `return` || |
| |+--------------------+| |
| ||:diagtext: `argument` || |
| |+--------------------+| |
+--------------------------------------------------------------------------+----------------------+--------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `target exception specification is not superset of source` |
+-----------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wincompatible-function-pointer-types
-------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incompatible function pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `assigning to different types` ||| ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `passing to parameter of different type` |||:diagtext: `; dereference with \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `returning from function with different return type` |||:diagtext: `; take the address with &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `converting between types` |||:diagtext: `; remove \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `initializing with expression of different type` |||:diagtext: `; remove &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+----------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
-Wincompatible-library-redeclaration
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incompatible redeclaration of library function` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------+
-Wincompatible-ms-struct
------------------------
This diagnostic is an error by default, but the flag `` -Wno-incompatible-ms-struct `` can be used to disable the error.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `ms\_struct may not produce Microsoft-compatible layouts for classes with base classes or virtual functions` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Wincompatible-pointer-types
----------------------------
This diagnostic is enabled by default.
2016-09-14 09:55:42 +08:00
Also controls `-Wincompatible-function-pointer-types`_ , `-Wincompatible-pointer-types-discards-qualifiers`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incompatible pointer types` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `assigning to different types` ||| ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `passing to parameter of different type` |||:diagtext: `; dereference with \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `returning from function with different return type` |||:diagtext: `; take the address with &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `converting between types` |||:diagtext: `; remove \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `initializing with expression of different type` |||:diagtext: `; remove &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+-------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
-Wincompatible-pointer-types-discards-qualifiers
------------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext: `discards qualifiers in nested pointer types` |
| ||:diagtext: `assigning to different types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `passing to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `returning from function with different return type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `converting between types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `initializing with expression of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+---------------------------+----------------------------------------------------------------+---------------------------------------------------------------+
+---------------------------+----------------------------------------------------------------+---------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext: `discards qualifiers` |
| ||:diagtext: `assigning to different types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `passing to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `returning from function with different return type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `converting between types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `initializing with expression of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+---------------------------+----------------------------------------------------------------+---------------------------------------+
-Wincompatible-property-type
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is incompatible with type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `inherited from` |nbsp| :placeholder: `C` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wincompatible-sysroot
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using sysroot for '` :placeholder: `A` :diagtext: `' but targeting '` :placeholder: `B` :diagtext: `'` |
+------------------------------------------------------------------------------------------------------------------------------------+
-Wincomplete-implementation
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method definition for` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found` |
+-----------------------------------------------------------------------------------------------------------------+
-Wincomplete-module
-------------------
Some of the diagnostics controlled by this flag are enabled by default.
Controls `-Wincomplete-umbrella`_ , `-Wnon-modular-include-in-module`_ .
-Wincomplete-umbrella
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing submodule '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `umbrella directory '` :placeholder: `A` :diagtext: `' not found` |
+--------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `umbrella header for module '` :placeholder: `A` :diagtext: `' does not include header '` :placeholder: `B` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-Winconsistent-dllimport
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `redeclared without` |nbsp| :placeholder: `B` |nbsp| :diagtext: `attribute: previous` |nbsp| :placeholder: `B` |nbsp| :diagtext: `ignored` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `redeclared without 'dllimport' attribute: 'dllexport' attribute added` |
+------------------------------------------------------------------------------------------------------------------------------------+
2017-04-14 06:44:22 +08:00
-Winconsistent-missing-destructor-override
------------------------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `overrides a destructor but is not marked 'override'` |
+------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Winconsistent-missing-override
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `overrides a member function but is not marked 'override'` |
+-----------------------------------------------------------------------------------------------------------------------+
-Wincrement-bool
----------------
This diagnostic is enabled by default.
Also controls `-Wdeprecated-increment-bool`_ .
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:error: `error:` |nbsp| :diagtext: `ISO C++17 does not allow incrementing expression of type bool` |
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------------------------------+
-Winfinite-recursion
--------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `all paths through this function will call itself` |
+---------------------------------------------------------------------------------------+
-Winit-self
-----------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Winitializer-overrides
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initializer overrides prior initialization of this subobject` |
+---------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `subobject initialization overrides initialization of other fields within its enclosing subobject` |
+---------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Winjected-class-name
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++ specifies that qualified reference to` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a constructor name rather than a` |nbsp| |+-------------------------+| |nbsp| :diagtext: `in this context, despite preceding` |nbsp| |+----------------------+| |nbsp| :diagtext: `keyword` |
| ||:diagtext: `template name` || ||:diagtext: `'typename'` || |
| |+-------------------------+| |+----------------------+| |
| ||:diagtext: `type` || ||:diagtext: `'template'` || |
| |+-------------------------+| |+----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------+--------------------------------------------------------------+------------------------+---------------------------+
2016-09-12 13:58:29 +08:00
-Winline
--------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Winline-asm
------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Winline-new-delete
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `replacement function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot be declared 'inline'` |
+----------------------------------------------------------------------------------------------------------------------------------+
-Winstantiation-after-specialization
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit instantiation of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `that occurs after an explicit specialization has no effect` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wint-conversion
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incompatible integer to pointer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `assigning to different types` ||| ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `passing to parameter of different type` |||:diagtext: `; dereference with \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `returning from function with different return type` |||:diagtext: `; take the address with &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `converting between types` |||:diagtext: `; remove \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `initializing with expression of different type` |||:diagtext: `; remove &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incompatible pointer to integer conversion` |nbsp| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `assigning to different types` ||| ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `passing to parameter of different type` |||:diagtext: `; dereference with \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `returning from function with different return type` |||:diagtext: `; take the address with &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `converting between types` |||:diagtext: `; remove \*` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `initializing with expression of different type` |||:diagtext: `; remove &` ||
| |+--------------------------------------------------------------+|+-------------------------------------+|
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+-----------------------------------------------------------------------------------------+----------------------------------------------------------------+---------------------------------------+
-Wint-conversions
-----------------
Synonym for `-Wint-conversion`_ .
-Wint-to-pointer-cast
---------------------
This diagnostic is enabled by default.
Also controls `-Wint-to-void-pointer-cast`_ .
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `from smaller integer type` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wint-to-void-pointer-cast
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `from smaller integer type` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Winteger-overflow
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overflow in expression; result is` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with type` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Winvalid-command-line-argument
-------------------------------
This diagnostic is enabled by default.
Also controls `-Wignored-optimization-argument`_ .
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the object size sanitizer has no effect at -O0, but is explicitly enabled:` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `optimization level '` :placeholder: `A` :diagtext: `' is not supported; using '` :placeholder: `B` :placeholder: `C` :diagtext: `' instead` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Winvalid-constexpr
-------------------
This diagnostic is an error by default, but the flag `` -Wno-invalid-constexpr `` can be used to disable the error.
**Diagnostic text:**
+----------------------------------------------------+-------------------------+--------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `constexpr` |nbsp| |+-----------------------+| |nbsp| :diagtext: `never produces a constant expression` |
| ||:diagtext: `function` || |
| |+-----------------------+| |
| ||:diagtext: `constructor` || |
| |+-----------------------+| |
+----------------------------------------------------+-------------------------+--------------------------------------------------------+
-Winvalid-iboutlet
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-----------------------------+| |nbsp| :diagtext: `with` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute must be an object type (invalid` |nbsp| :placeholder: `B` :diagtext: `)` |
| ||:diagtext: `instance variable` || |
| |+-----------------------------+| |
| ||:diagtext: `property` || |
| |+-----------------------------+| |
+---------------------------+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `IBOutletCollection properties should be copy/strong and not assign` |
+---------------------------------------------------------------------------------------------------------+
-Winvalid-initializer-from-system-header
----------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid constructor form class in system header, should not be explicit` |
+--------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Winvalid-ios-deployment-target
-------------------------------
This diagnostic is an error by default, but the flag `` -Wno-invalid-ios-deployment-target `` can be used to disable the error.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `invalid iOS deployment version '` :placeholder: `A` :diagtext: `', iOS 10 is the maximum deployment target for 32-bit targets` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Winvalid-noreturn
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function declared 'noreturn' should not return` |
+-------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `declared 'noreturn' should not return` |
+--------------------------------------------------------------------------------------------------------------------------------+
-Winvalid-offsetof
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `offset of on non-POD type` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `offset of on non-standard-layout type` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------------------+
-Winvalid-or-nonexistent-directory
----------------------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `environment variable SCE\_ORBIS\_SDK\_DIR is set, but points to invalid or nonexistent directory '` :placeholder: `A` :diagtext: `'` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unable to find` |nbsp| :placeholder: `A` |nbsp| :diagtext: `directory, expected to be in '` :placeholder: `B` :diagtext: `'` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Winvalid-partial-specialization
--------------------------------
This diagnostic is an error by default, but the flag `` -Wno-invalid-partial-specialization `` can be used to disable the error.
**Diagnostic text:**
+-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| |+--------------------+| |nbsp| :diagtext: `template partial specialization is not more specialized than the primary template` |
| ||:diagtext: `class` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+-----------------------+----------------------+-----------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Winvalid-pch
-------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Winvalid-pp-token
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty character constant` |
+---------------------------------------------------------------+
+------------------------------------------------------------------+-----------------+-----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing terminating` |nbsp| |+---------------+| |nbsp| :diagtext: `character` |
| ||:diagtext: `'` || |
| |+---------------+| |
| ||:diagtext: `'"'` || |
| |+---------------+| |
+------------------------------------------------------------------+-----------------+-----------------------------+
-Winvalid-source-encoding
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `illegal character encoding in character literal` |
+--------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `illegal character encoding in string literal` |
+-----------------------------------------------------------------------------------+
-Winvalid-token-paste
---------------------
This diagnostic is an error by default, but the flag `` -Wno-invalid-token-paste `` can be used to disable the error.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `pasting formed '` :placeholder: `A` :diagtext: `', an invalid preprocessing token` |
+----------------------------------------------------------------------------------------------------------------+
-Wjump-seh-finally
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `jump out of \_\_finally block has undefined behavior` |
+-------------------------------------------------------------------------------------------+
-Wkeyword-compat
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `keyword '` :placeholder: `A` :diagtext: `' will be made available as an identifier` |nbsp| |+-----------------------------------------------------+|
| ||:diagtext: `here` ||
| |+-----------------------------------------------------+|
| ||:diagtext: `for the remainder of the translation unit` ||
| |+-----------------------------------------------------+|
+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
-Wkeyword-macro
---------------
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `keyword is hidden by macro definition` |
+----------------------------------------------------------------------------+
-Wknr-promoted-parameter
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `promoted type of K&R function parameter is not compatible with parameter type` |nbsp| :diagtext: `declared in a previous prototype` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wlanguage-extension-token
--------------------------
**Diagnostic text:**
+-----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extension used` |
+-----------------------------------------------------+
-Wlarge-by-value-copy
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a large (` :placeholder: `B` |nbsp| :diagtext: `bytes) pass-by-value argument; pass it by reference instead ?` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `return value of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a large (` :placeholder: `B` |nbsp| :diagtext: `bytes) pass-by-value object; pass it by reference instead ?` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wliblto
--------
2017-01-21 03:27:09 +08:00
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2016-09-12 13:58:29 +08:00
-Wliteral-conversion
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `changes value from` |nbsp| :placeholder: `C` |nbsp| :diagtext: `to` |nbsp| :placeholder: `D` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wliteral-range
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `magnitude of floating-point constant too large for type` |nbsp| :placeholder: `A` :diagtext: `; maximum is` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `magnitude of floating-point constant too small for type` |nbsp| :placeholder: `A` :diagtext: `; minimum is` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wlocal-type-template-args
--------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++98-compat-local-type-template-args`_ .
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `template argument uses local type` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------------------------+
-Wlogical-not-parentheses
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+--------------------------------------------------------------------------------------------------------+------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `logical not is only applied to the left hand side of this` |nbsp| |+----------------------------+|
| ||:diagtext: `comparison` ||
| |+----------------------------+|
| ||:diagtext: `bitwise operator` ||
| |+----------------------------+|
+--------------------------------------------------------------------------------------------------------+------------------------------+
2016-09-12 13:58:29 +08:00
-Wlogical-op-parentheses
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'&&' within '\|\|'` |
+---------------------------------------------------------+
-Wlong-long
-----------
Also controls `-Wc++11-long-long`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'long long' is an extension when C99 mode is not enabled` |
+-----------------------------------------------------------------------------------------------+
-Wloop-analysis
---------------
Controls `-Wfor-loop-analysis`_ , `-Wrange-loop-analysis`_ .
-Wmacro-redefined
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `macro redefined` |
+------------------------------------------------------------------------------+
-Wmain
------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++ does not allow 'main' to be used by a program` |
+--------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'main' is not allowed to be declared \_Noreturn` |
+--------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'main' is not allowed to be declared variadic` |
+------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `only one parameter on 'main' declaration` |
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable named 'main' with external linkage has undefined behavior` |
+---------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `bool literal returned from 'main'` |
+------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'main' should not be declared static` |
+---------------------------------------------------------------------------+
-Wmain-return-type
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `return type of 'main' is not 'int'` |
+-------------------------------------------------------------------------+
-Wmalformed-warning-check
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_has\_warning expected option name (e.g. "-Wundef")` |
+---------------------------------------------------------------------------------------------+
-Wmany-braces-around-scalar-init
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `too many braces around scalar initializer` |
+--------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wmax-unsigned-zero
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `taking the max of` |nbsp| |+-------------------------------------+| |nbsp| :diagtext: `is always equal to the other value` |
| ||:diagtext: `a value and unsigned zero` || |
| |+-------------------------------------+| |
| ||:diagtext: `unsigned zero and a value` || |
| |+-------------------------------------+| |
+----------------------------------------------------------------+---------------------------------------+------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wmemsize-comparison
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `size argument in` |nbsp| :placeholder: `A` |nbsp| :diagtext: `call is a comparison` |
+-----------------------------------------------------------------------------------------------------------------------+
-Wmethod-signatures
-------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting parameter types in implementation of` |nbsp| :placeholder: `A` :diagtext: `:` |nbsp| :placeholder: `B` |nbsp| :diagtext: `vs` |nbsp| :placeholder: `C` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting return type in implementation of` |nbsp| :placeholder: `A` :diagtext: `:` |nbsp| :placeholder: `B` |nbsp| :diagtext: `vs` |nbsp| :placeholder: `C` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft
-----------
Some of the diagnostics controlled by this flag are enabled by default.
2016-09-14 09:55:42 +08:00
Controls `-Winconsistent-dllimport`_ , `-Wmicrosoft-anon-tag`_ , `-Wmicrosoft-cast`_ , `-Wmicrosoft-charize`_ , `-Wmicrosoft-comment-paste`_ , `-Wmicrosoft-const-init`_ , `-Wmicrosoft-cpp-macro`_ , `-Wmicrosoft-default-arg-redefinition`_ , `-Wmicrosoft-end-of-file`_ , `-Wmicrosoft-enum-forward-reference`_ , `-Wmicrosoft-enum-value`_ , `-Wmicrosoft-exception-spec`_ , `-Wmicrosoft-explicit-constructor-call`_ , `-Wmicrosoft-extra-qualification`_ , `-Wmicrosoft-fixed-enum`_ , `-Wmicrosoft-flexible-array`_ , `-Wmicrosoft-goto`_ , `-Wmicrosoft-include`_ , `-Wmicrosoft-mutable-reference`_ , `-Wmicrosoft-pure-definition`_ , `-Wmicrosoft-redeclare-static`_ , `-Wmicrosoft-sealed`_ , `-Wmicrosoft-template`_ , `-Wmicrosoft-union-member-reference`_ , `-Wmicrosoft-unqualified-friend`_ , `-Wmicrosoft-using-decl`_ , `-Wmicrosoft-void-pseudo-dtor`_ .
2016-09-12 13:58:29 +08:00
-Wmicrosoft-anon-tag
--------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext: `are a Microsoft extension` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
+--------------------------------------------------------+---------------------+---------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `anonymous` |nbsp| |+-------------------+| |nbsp| :diagtext: `are a Microsoft extension` |
| ||:diagtext: `structs` || |
| |+-------------------+| |
| ||:diagtext: `unions` || |
| |+-------------------+| |
+--------------------------------------------------------+---------------------+---------------------------------------------+
-Wmicrosoft-cast
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static\_cast between pointer-to-function and pointer-to-object is a Microsoft extension` |
+------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-charize
-------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `charizing operator #@ is a Microsoft extension` |
+-------------------------------------------------------------------------------------+
-Wmicrosoft-comment-paste
-------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pasting two '/' tokens into a '//' comment is a Microsoft extension` |
+----------------------------------------------------------------------------------------------------------+
-Wmicrosoft-const-init
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `default initialization of an object of const type` |nbsp| :placeholder: `A` |+---------------------------------------------------------------+| |nbsp| :diagtext: `is a Microsoft extension` |
| || || |
| |+---------------------------------------------------------------+| |
| || |nbsp| :diagtext: `without a user-provided default constructor` || |
| |+---------------------------------------------------------------+| |
+----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+--------------------------------------------+
-Wmicrosoft-cpp-macro
---------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `C++ operator` |nbsp| :placeholder: `A` |nbsp| :diagtext: `(aka` |nbsp| :placeholder: `B` :diagtext: `) used as a macro name` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-default-arg-redefinition
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redefinition of default argument` |
+-----------------------------------------------------------------------+
-Wmicrosoft-end-of-file
-----------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `treating Ctrl-Z as end-of-file is a Microsoft extension` |
+----------------------------------------------------------------------------------------------+
-Wmicrosoft-enum-forward-reference
----------------------------------
2017-10-27 05:06:52 +08:00
This diagnostic is enabled by default.
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `forward references to 'enum' types are a Microsoft extension` |
+---------------------------------------------------------------------------------------------------+
-Wmicrosoft-enum-value
----------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumerator value is not representable in the underlying type` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-exception-spec
--------------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception specification of '...' is a Microsoft extension` |
+------------------------------------------------------------------------------------------------+
+---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------+|:diagtext: `incomplete type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is not allowed in exception specification` |
| || || |
| |+--------------------------------+| |
| ||:diagtext: `pointer to` |nbsp| || |
| |+--------------------------------+| |
| ||:diagtext: `reference to` |nbsp| || |
| |+--------------------------------+| |
+---------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception specification in declaration does not match previous declaration` |
+-----------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception specification in explicit instantiation does not match instantiated one` |
+------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is missing exception specification '` :placeholder: `B` :diagtext: `'` |
+--------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception specification of overriding function is more lax than base version` |
+-------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-exists
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------+---------------------------------+--------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `dependent` |nbsp| |+-------------------------------+| |nbsp| :diagtext: `declarations are ignored` |
| ||:diagtext: `\_\_if\_not\_exists` || |
| |+-------------------------------+| |
| ||:diagtext: `\_\_if\_exists` || |
| |+-------------------------------+| |
+--------------------------------------------------------+---------------------------------+--------------------------------------------+
-Wmicrosoft-explicit-constructor-call
-------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit constructor calls are a Microsoft extension` |
+-------------------------------------------------------------------------------------------+
-Wmicrosoft-extra-qualification
-------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra qualification on member` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------+
-Wmicrosoft-fixed-enum
----------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration types with a fixed underlying type are a Microsoft extension` |
+---------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-flexible-array
--------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in otherwise empty` |nbsp| |+---------------------+| |nbsp| :diagtext: `is a Microsoft extension` |
| ||:diagtext: `struct` || |
| |+---------------------+| |
| ||:diagtext: `interface` || |
| |+---------------------+| |
| ||:diagtext: `union` || |
| |+---------------------+| |
| ||:diagtext: `class` || |
| |+---------------------+| |
| ||:diagtext: `enum` || |
| |+---------------------+| |
+----------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in a union is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-goto
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `jump from this goto statement to its label is a Microsoft extension` |
+----------------------------------------------------------------------------------------------------------+
-Wmicrosoft-include
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#include resolved using non-portable Microsoft search rules as:` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-mutable-reference
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'mutable' on a reference type is a Microsoft extension` |
+---------------------------------------------------------------------------------------------+
-Wmicrosoft-pure-definition
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function definition with pure-specifier is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------+
-Wmicrosoft-redeclare-static
----------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redeclaring non-static` |nbsp| :placeholder: `A` |nbsp| :diagtext: `as static is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-sealed
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'sealed' keyword is a Microsoft extension` |
+--------------------------------------------------------------------------------+
-Wmicrosoft-template
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicate explicit instantiation of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `ignored as a Microsoft extension` |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of identifier` |nbsp| :placeholder: `A` |nbsp| :diagtext: `found via unqualified lookup into dependent bases of class templates is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit specialization of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `within class scope is a Microsoft extension` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using the undeclared type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `as a default template argument is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-type template argument containing a dereference operation is a Microsoft extension` |
+-----------------------------------------------------------------------------------------------------------------------------+
+---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------------------------+| |nbsp| :diagtext: `specialization of` |nbsp| :placeholder: `B` |nbsp| :diagtext: `outside namespace enclosing` |nbsp| :placeholder: `C` |nbsp| :diagtext: `is a Microsoft extension` |
| ||:diagtext: `class template` || |
| |+-------------------------------------+| |
| ||:diagtext: `class template partial` || |
| |+-------------------------------------+| |
| ||:diagtext: `variable template` || |
| |+-------------------------------------+| |
| ||:diagtext: `variable template partial` || |
| |+-------------------------------------+| |
| ||:diagtext: `function template` || |
| |+-------------------------------------+| |
| ||:diagtext: `member function` || |
| |+-------------------------------------+| |
| ||:diagtext: `static data member` || |
| |+-------------------------------------+| |
| ||:diagtext: `member class` || |
| |+-------------------------------------+| |
| ||:diagtext: `member enumeration` || |
| |+-------------------------------------+| |
+---------------------------+---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `template argument for template type parameter must be a type; omitted 'typename' is a Microsoft extension` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of undeclared identifier` |nbsp| :placeholder: `A` :diagtext: `; unqualified lookup into dependent bases of class template` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is a Microsoft extension` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-union-member-reference
----------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `union member` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has reference type` |nbsp| :placeholder: `B` :diagtext: `, which is a Microsoft extension` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-unqualified-friend
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unqualified friend declaration referring to type outside of the nearest enclosing namespace is a Microsoft extension; add a nested name specifier` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-using-decl
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using declaration referring to inaccessible member '` :placeholder: `A` :diagtext: `' (which refers to accessible member '` :placeholder: `B` :diagtext: `') is a Microsoft compatibility extension` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmicrosoft-void-pseudo-dtor
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pseudo-destructors on type void are a Microsoft extension` |
+------------------------------------------------------------------------------------------------+
-Wmismatched-new-delete
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+
|:warning: `warning:` |nbsp| :diagtext: `'delete` |+----------------+|:diagtext: `' applied to a pointer that was allocated with 'new` |+----------------+|:diagtext: `'; did you mean 'delete` |+----------------+|:diagtext: `'?` |
| || || ||:diagtext: `\[\]` || ||:diagtext: `\[\]` || |
| |+----------------+| |+----------------+| |+----------------+| |
| ||:diagtext: `\[\]` || || || || || |
| |+----------------+| |+----------------+| |+----------------+| |
+----------------------------------------------+------------------+---------------------------------------------------------------+------------------+-----------------------------------+------------------+--------------+
-Wmismatched-parameter-types
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting parameter types in implementation of` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------------------------------------+
-Wmismatched-return-types
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting return type in implementation of` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------------------+
-Wmismatched-tags
-----------------
**Diagnostic text:**
+---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `C` |nbsp| :diagtext: `defined as` |nbsp| |+------------------------+|+----------------------------+| |nbsp| :diagtext: `here but previously declared as` |nbsp| |+------------------------+|+----------------------------+|
| ||:diagtext: `a struct` ||| || ||:diagtext: `a struct` ||| ||
| |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+|
| ||:diagtext: `an interface` ||| |nbsp| :diagtext: `template` || ||:diagtext: `an interface` ||| |nbsp| :diagtext: `template` ||
| |+------------------------+|+----------------------------+| |+------------------------+|+----------------------------+|
| ||:diagtext: `a class` || | ||:diagtext: `a class` || |
| |+------------------------+| | |+------------------------+| |
+---------------------------------------------------------------------------------+--------------------------+------------------------------+-----------------------------------------------------------+--------------------------+------------------------------+
+---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+
|:warning: `warning:` |nbsp| |+---------------------+|+----------------------------+| |nbsp| :placeholder: `C` |nbsp| :diagtext: `was previously declared as a` |nbsp| |+---------------------+|+----------------------------+|
| ||:diagtext: `struct` ||| || ||:diagtext: `struct` ||| ||
| |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+|
| ||:diagtext: `interface` ||| |nbsp| :diagtext: `template` || ||:diagtext: `interface` ||| |nbsp| :diagtext: `template` ||
| |+---------------------+|+----------------------------+| |+---------------------+|+----------------------------+|
| ||:diagtext: `class` || | ||:diagtext: `class` || |
| |+---------------------+| | |+---------------------+| |
+---------------------------+-----------------------+------------------------------+--------------------------------------------------------------------------------+-----------------------+------------------------------+
-Wmissing-braces
----------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `suggest braces around initialization of subobject` |
+----------------------------------------------------------------------------------------+
-Wmissing-declarations
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration does not declare anything` |
+----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' is not permitted on a declaration of a type` |
+-----------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `typedef requires a name` |
+--------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' ignored on this declaration` |
+-------------------------------------------------------------------------------------------------+
-Wmissing-exception-spec
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is missing exception specification '` :placeholder: `B` :diagtext: `'` |
+--------------------------------------------------------------------------------------------------------------------------------+
-Wmissing-field-initializers
----------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `initializer` |
+-----------------------------------------------------------------------------------------------------------+
-Wmissing-format-attribute
--------------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wmissing-include-dirs
----------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wmissing-method-return-type
----------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method has no return type specified; defaults to 'id'` |
+--------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wmissing-noescape
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parameter of overriding method should be annotated with \_\_attribute\_\_((noescape))` |
+----------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wmissing-noreturn
------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `block could be declared with attribute 'noreturn'` |
+----------------------------------------------------------------------------------------+
+---------------------------+----------------------+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `could be declared with attribute 'noreturn'` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `method` || |
| |+--------------------+| |
+---------------------------+----------------------+---------------------------------------------------------------------------------------+
-Wmissing-prototype-for-cc
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function with no prototype cannot use the` |nbsp| :placeholder: `A` |nbsp| :diagtext: `calling convention` |
+----------------------------------------------------------------------------------------------------------------------------------------------+
-Wmissing-prototypes
--------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no previous prototype for function` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------+
-Wmissing-selector-name
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `used as the name of the previous parameter rather than as part of the selector` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Wmissing-sysroot
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no such sysroot directory: '` :placeholder: `A` :diagtext: `'` |
+------------------------------------------------------------------------------------------------+
-Wmissing-variable-declarations
-------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no previous extern declaration for non-static variable` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------------------------------------------+
-Rmodule-build
--------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :diagtext: `building module '` :placeholder: `A` :diagtext: `' as '` :placeholder: `B` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :diagtext: `finished building module '` :placeholder: `A` :diagtext: `'` |
+--------------------------------------------------------------------------------------------+
2017-04-14 06:44:22 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :diagtext: `could not acquire lock file for module '` :placeholder: `A` :diagtext: `':` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :diagtext: `timed out waiting to acquire lock file for module '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wmodule-conflict
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `module '` :placeholder: `A` :diagtext: `' conflicts with already-imported module '` :placeholder: `B` :diagtext: `':` |nbsp| :placeholder: `C` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-04-14 06:44:22 +08:00
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `module file '` :placeholder: `A` :diagtext: `' was validated as a system module and is now being imported as a non-system module; any difference in diagnostic options will be ignored` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wmodule-file-config-mismatch
-----------------------------
This diagnostic is an error by default, but the flag `` -Wno-module-file-config-mismatch `` can be used to disable the error.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `module file` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot be loaded due to a configuration mismatch with the current compilation` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmodule-file-extension
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicate module file extension block name '` :placeholder: `A` :diagtext: `'` |
+----------------------------------------------------------------------------------------------------------------+
-Wmodule-import-in-extern-c
---------------------------
This diagnostic is an error by default, but the flag `` -Wno-module-import-in-extern-c `` can be used to disable the error.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `import of C++ module '` :placeholder: `A` :diagtext: `' appears within extern "C" language linkage specification` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
-Wmodules-ambiguous-internal-linkage
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ambiguous use of internal linkage declaration` |nbsp| :placeholder: `A` |nbsp| :diagtext: `defined in multiple modules` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wmodules-import-nested-redundant
---------------------------------
This diagnostic is an error by default, but the flag `` -Wno-modules-import-nested-redundant `` can be used to disable the error.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `redundant #include of module '` :placeholder: `A` :diagtext: `' appears within` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------------------------------------+
-Wmost
------
Some of the diagnostics controlled by this flag are enabled by default.
2017-10-27 05:06:52 +08:00
Controls `-Wcast-of-sel-type`_ , `-Wchar-subscripts`_ , `-Wcomment`_ , `-Wdelete-non-virtual-dtor`_ , `-Wextern-c-compat`_ , `-Wfor-loop-analysis`_ , `-Wformat`_ , `-Wimplicit`_ , `-Winfinite-recursion`_ , `-Wmismatched-tags`_ , `-Wmissing-braces`_ , `-Wmove`_ , `-Wmultichar`_ , `-Wobjc-designated-initializers`_ , `-Wobjc-flexible-array`_ , `-Wobjc-missing-super-calls`_ , `-Woverloaded-virtual`_ , `-Wprivate-extern`_ , `-Wreorder`_ , `-Wreturn-type`_ , `-Wself-assign`_ , `-Wself-move`_ , `-Wsizeof-array-argument`_ , `-Wsizeof-array-decay`_ , `-Wstring-plus-int`_ , `-Wtrigraphs`_ , `-Wuninitialized`_ , `-Wunknown-pragmas`_ , `-Wunused`_ , `-Wuser-defined-warnings`_ , `-Wvolatile-register-var`_ .
2016-09-12 13:58:29 +08:00
-Wmove
------
Controls `-Wpessimizing-move`_ , `-Wredundant-move`_ , `-Wself-move`_ .
-Wmsvc-include
--------------
Synonym for `-Wmicrosoft-include`_ .
2017-04-14 06:44:22 +08:00
-Wmsvc-not-found
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unable to find a Visual Studio installation; try running Clang from a developer command prompt` |
+-------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wmultichar
-----------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multi-character character constant` |
+-------------------------------------------------------------------------+
-Wmultiple-move-vbase
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `defaulted move assignment operator of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will move assign virtual base class` |nbsp| :placeholder: `B` |nbsp| :diagtext: `multiple times` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wnarrowing
-----------
Synonym for `-Wc++11-narrowing`_ .
-Wnested-anon-types
-------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------+--------------------+------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `anonymous types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext: `are an extension` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
+---------------------------------------------------------------------------------------+--------------------+------------------------------------+
-Wnested-externs
----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wnew-returns-null
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `should not return a null pointer unless it is declared 'throw()'` |+---------------------------------+|
| || ||
| |+---------------------------------+|
| || |nbsp| :diagtext: `or 'noexcept'` ||
| |+---------------------------------+|
+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+
-Wnewline-eof
-------------
**Diagnostic text:**
+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no newline at end of file` |
+----------------------------------------------------------------+
+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no newline at end of file` |
+----------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wnoexcept-type
---------------
Synonym for `-Wc++17-compat-mangling`_ .
2016-09-12 13:58:29 +08:00
-Wnon-gcc
---------
Some of the diagnostics controlled by this flag are enabled by default.
2016-09-14 09:55:42 +08:00
Controls `-Wconversion`_ , `-Wliteral-range`_ , `-Wsign-compare`_ .
2016-09-12 13:58:29 +08:00
-Wnon-literal-null-conversion
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression which evaluates to zero treated as a null pointer constant of type` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------------------------------------------------+
-Wnon-modular-include-in-framework-module
-----------------------------------------
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `include of non-modular header inside framework module '` :placeholder: `A` :diagtext: `': '` :placeholder: `B` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wnon-modular-include-in-module
-------------------------------
Also controls `-Wnon-modular-include-in-framework-module`_ .
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `include of non-modular header inside module '` :placeholder: `A` :diagtext: `': '` :placeholder: `B` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wnon-pod-varargs
-----------------
This diagnostic is an error by default, but the flag `` -Wno-non-pod-varargs `` can be used to disable the error.
**Diagnostic text:**
+----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
|:error: `error:` |nbsp| :diagtext: `cannot pass object of` |nbsp| |+-----------------------+| |nbsp| :diagtext: `type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `through variadic` |nbsp| |+-----------------------+|:diagtext: `; call will abort at runtime` |
| ||:diagtext: `non-POD` || ||:diagtext: `function` || |
| |+-----------------------+| |+-----------------------+| |
| ||:diagtext: `non-trivial` || ||:diagtext: `block` || |
| |+-----------------------+| |+-----------------------+| |
| | | ||:diagtext: `method` || |
| | | |+-----------------------+| |
| | | ||:diagtext: `constructor` || |
| | | |+-----------------------+| |
+----------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------------------------+-------------------------+----------------------------------------+
+------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `cannot pass` |nbsp| |+-----------------------+| |nbsp| :diagtext: `object of type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `to variadic` |nbsp| |+-----------------------+|:diagtext: `; expected type from format string was` |nbsp| :placeholder: `D` |
| ||:diagtext: `non-POD` || ||:diagtext: `function` || |
| |+-----------------------+| |+-----------------------+| |
| ||:diagtext: `non-trivial` || ||:diagtext: `block` || |
| |+-----------------------+| |+-----------------------+| |
| | | ||:diagtext: `method` || |
| | | |+-----------------------+| |
| | | ||:diagtext: `constructor` || |
| | | |+-----------------------+| |
+------------------------------------------------------+-------------------------+-------------------------------------------------------------------------------------------------+-------------------------+--------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `second argument to 'va\_arg' is of non-POD type` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `second argument to 'va\_arg' is of ARC ownership-qualified type` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------------------------------+
-Wnon-virtual-dtor
------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has virtual functions but non-virtual destructor` |
+---------------------------------------------------------------------------------------------------------------+
-Wnonnull
---------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `null passed to a callee that requires a non-null argument` |
+------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------+----------------------+---------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `null returned from` |nbsp| |+--------------------+| |nbsp| :diagtext: `that requires a non-null return value` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `method` || |
| |+--------------------+| |
+-----------------------------------------------------------------+----------------------+---------------------------------------------------------+
-Wnonportable-cfstrings
-----------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wnonportable-include-path
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-portable path to file '` :placeholder: `A` :diagtext: `'; specified path differs in case from file name on disk` |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wnonportable-system-include-path
---------------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-portable path to file '` :placeholder: `A` :diagtext: `'; specified path differs in case from file name on disk` |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wnonportable-vector-initialization
-----------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `vector initializers are not compatible with NEON intrinsics in big endian mode` |
+---------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wnsconsumed-mismatch
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overriding method has mismatched ns\_consumed attribute on its parameter` |
+---------------------------------------------------------------------------------------------------------------+
-Wnsreturns-mismatch
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------+---------------------------+------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overriding method has mismatched ns\_returns\_` |+-------------------------+| |nbsp| :diagtext: `attributes` |
| ||:diagtext: `not\_retained` || |
| |+-------------------------+| |
| ||:diagtext: `retained` || |
| |+-------------------------+| |
+-------------------------------------------------------------------------------------+---------------------------+------------------------------+
2016-09-12 13:58:29 +08:00
-Wnull-arithmetic
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of NULL in arithmetic operation` |
+--------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison between NULL and non-pointer` |nbsp| |+------------------------------------------------------------+|
| ||+----------------------------------------------------------+||
| |||:diagtext: `(` :placeholder: `B` |nbsp| :diagtext: `and NULL)` |||
| ||+----------------------------------------------------------+||
| |+------------------------------------------------------------+|
| ||+----------------------------------------------------------+||
| |||:diagtext: `(NULL and` |nbsp| :placeholder: `B` :diagtext: `)` |||
| ||+----------------------------------------------------------+||
| |+------------------------------------------------------------+|
+--------------------------------------------------------------------------------------+--------------------------------------------------------------+
-Wnull-character
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------+--------------------+---------------------------+
|:warning: `warning:` |nbsp| :diagtext: `null character(s) preserved in` |nbsp| |+------------------+| |nbsp| :diagtext: `literal` |
| ||:diagtext: `char` || |
| |+------------------+| |
| ||:diagtext: `string` || |
| |+------------------+| |
+-----------------------------------------------------------------------------+--------------------+---------------------------+
+-------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `null character ignored` |
+-------------------------------------------------------------+
-Wnull-conversion
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------+---------------------+-------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion of` |nbsp| |+-------------------+| |nbsp| :diagtext: `constant to` |nbsp| :placeholder: `B` |
| ||:diagtext: `NULL` || |
| |+-------------------+| |
| ||:diagtext: `nullptr` || |
| |+-------------------+| |
+---------------------------------------------------------------------+---------------------+-------------------------------------------------------+
-Wnull-dereference
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `binding dereferenced null pointer to reference has undefined behavior` |
+------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `indirection of non-volatile null pointer will be deleted, not trap` |
+---------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wnull-pointer-arithmetic
-------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension` |
+--------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+----------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `performing pointer arithmetic on a null pointer has undefined behavior` |+--------------------------------------------+|
| || ||
| |+--------------------------------------------+|
| || |nbsp| :diagtext: `if the offset is nonzero` ||
| |+--------------------------------------------+|
+-------------------------------------------------------------------------------------------------------------+----------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wnullability
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting nullability specifier on parameter types,` |nbsp| :placeholder: `A` |nbsp| :diagtext: `conflicts with existing specifier` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting nullability specifier on return types,` |nbsp| :placeholder: `A` |nbsp| :diagtext: `conflicts with existing specifier` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `nullability specifier` |nbsp| :placeholder: `A` |nbsp| :diagtext: `conflicts with existing specifier` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `synthesized setter` |nbsp| :placeholder: `A` |nbsp| :diagtext: `for null\_resettable property` |nbsp| :placeholder: `B` |nbsp| :diagtext: `does not handle nil` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `duplicate nullability specifier` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------------+
-Wnullability-completeness
--------------------------
This diagnostic is enabled by default.
2017-01-21 03:27:09 +08:00
Also controls `-Wnullability-completeness-on-arrays`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------+| |nbsp| :diagtext: `is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)` |
| ||:diagtext: `pointer` || |
| |+--------------------------+| |
| ||:diagtext: `block pointer` || |
| |+--------------------------+| |
| ||:diagtext: `member pointer` || |
| |+--------------------------+| |
+---------------------------+----------------------------+-----------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wnullability-completeness-on-arrays
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `array parameter is missing a nullability type specifier (\_Nonnull, \_Nullable, or \_Null\_unspecified)` |
+----------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wnullability-declspec
----------------------
This diagnostic is an error by default, but the flag `` -Wno-nullability-declspec `` can be used to disable the error.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+
|:error: `error:` |nbsp| :diagtext: `nullability specifier` |nbsp| :placeholder: `A` |nbsp| :diagtext: `cannot be applied to non-pointer type` |nbsp| :placeholder: `B` :diagtext: `; did you mean to apply the specifier to the` |nbsp| |+-----------------------------------+|:diagtext: `?` |
| ||:diagtext: `pointer` || |
| |+-----------------------------------+| |
| ||:diagtext: `block pointer` || |
| |+-----------------------------------+| |
| ||:diagtext: `member pointer` || |
| |+-----------------------------------+| |
| ||:diagtext: `function pointer` || |
| |+-----------------------------------+| |
| ||:diagtext: `member function pointer` || |
| |+-----------------------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------+-------------+
-Wnullability-extension
-----------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type nullability specifier` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a Clang extension` |
+---------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wnullability-inferred-on-nested-type
-------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `inferring '\_Nonnull' for pointer type within` |nbsp| |+---------------------+| |nbsp| :diagtext: `is deprecated` |
| ||:diagtext: `array` || |
| |+---------------------+| |
| ||:diagtext: `reference` || |
| |+---------------------+| |
+--------------------------------------------------------------------------------------------+-----------------------+---------------------------------+
2016-09-12 13:58:29 +08:00
-Wnullable-to-nonnull-conversion
--------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from nullable pointer` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to non-nullable pointer type` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-autosynthesis-property-ivar-name-match
---------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `autosynthesized property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will use` |nbsp| |+-----------------------+| |nbsp| :diagtext: `instance variable` |nbsp| :placeholder: `C` :diagtext: `, not existing instance variable` |nbsp| :placeholder: `D` |
| || || |
| |+-----------------------+| |
| ||:diagtext: `synthesized` || |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-circular-container
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `adding '` :placeholder: `A` :diagtext: `' to '` :placeholder: `B` :diagtext: `' might cause circular dependency in container` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-cocoa-api
----------------
Synonym for `-Wobjc-redundant-api-use`_ .
-Wobjc-designated-initializers
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `designated initializer missing a 'super' call to a designated initializer of the super class` |
+-----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `designated initializer invoked a non-designated initializer` |
+--------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `designated initializer should only invoke a designated initializer on 'super'` |
+--------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method override for the designated initializer of the superclass` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `convenience initializer missing a 'self' call to another initializer` |
+-----------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `convenience initializer should not invoke an initializer on 'super'` |
+----------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wobjc-flexible-array
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `can overwrite instance variable` |nbsp| :placeholder: `B` |nbsp| :diagtext: `with variable sized type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `in superclass` |nbsp| :placeholder: `D` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with variable sized type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `is not visible to subclasses and can conflict with their instance variables` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wobjc-forward-class-redefinition
---------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redefinition of forward class` |nbsp| :placeholder: `A` |nbsp| :diagtext: `of a typedef name of an object type is ignored` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-interface-ivars
----------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration of instance variables in the interface is deprecated` |
+-------------------------------------------------------------------------------------------------------+
-Wobjc-literal-compare
----------------------
This diagnostic is enabled by default.
Also controls `-Wobjc-string-compare`_ .
**Diagnostic text:**
+-------------------------------------------------------------------+----------------------------------+------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `direct comparison of` |nbsp| |+--------------------------------+| |nbsp| :diagtext: `has undefined behavior` |
| ||:diagtext: `an array literal` || |
| |+--------------------------------+| |
| ||:diagtext: `a dictionary literal` || |
| |+--------------------------------+| |
| ||:diagtext: `a numeric literal` || |
| |+--------------------------------+| |
| ||:diagtext: `a boxed expression` || |
| |+--------------------------------+| |
| || || |
| |+--------------------------------+| |
+-------------------------------------------------------------------+----------------------------------+------------------------------------------+
-Wobjc-literal-conversion
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit boolean conversion of Objective-C object literal always evaluates to true` |
+-------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `object of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not compatible with` |nbsp| |+---------------------------------+| |nbsp| :placeholder: `C` |
| ||:diagtext: `array element type` || |
| |+---------------------------------+| |
| ||:diagtext: `dictionary key type` || |
| |+---------------------------------+| |
| ||:diagtext: `dictionary value type` || |
| |+---------------------------------+| |
+-------------------------------------------------------------------------------------------------------------------------------+-----------------------------------+------------------------+
-Wobjc-macro-redefinition
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring redefinition of Objective-C qualifier macro` |
+-------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wobjc-messaging-id
-------------------
**Diagnostic text:**
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `messaging unqualified id` |
+---------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wobjc-method-access
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `class method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found (return type defaults to 'id')` |
+---------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `class method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder: `C` :diagtext: `?` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instance method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found (return type defaults to 'id')` |
+------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instance method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found (return type defaults to 'id'); did you mean` |nbsp| :placeholder: `C` :diagtext: `?` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instance method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `found instead of class method` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instance method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is being used on 'Class' which is not in the root class` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-missing-property-synthesis
---------------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `auto property synthesis is synthesizing property not explicitly synthesized` |
+------------------------------------------------------------------------------------------------------------------+
-Wobjc-missing-super-calls
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method possibly missing a \[super` |nbsp| :placeholder: `A` :diagtext: `\] call` |
+-------------------------------------------------------------------------------------------------------------------+
-Wobjc-multiple-method-names
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple methods named` |nbsp| :placeholder: `A` |nbsp| :diagtext: `found` |
+--------------------------------------------------------------------------------------------------------------+
-Wobjc-noncopy-retain-block-property
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `retain'ed block property does not copy the block - use copy attribute instead` |
+--------------------------------------------------------------------------------------------------------------------+
-Wobjc-nonunified-exceptions
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot catch an exception thrown with @throw in C++ in the non-unified exception model` |
+-----------------------------------------------------------------------------------------------------------------------------+
-Wobjc-property-implementation
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `class property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires method` |nbsp| :placeholder: `B` |nbsp| :diagtext: `to be defined - use @dynamic or provide a method implementation in this class implementation` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `class property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires method` |nbsp| :placeholder: `B` |nbsp| :diagtext: `to be defined - use @dynamic or provide a method implementation in this category` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires method` |nbsp| :placeholder: `B` |nbsp| :diagtext: `to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires method` |nbsp| :placeholder: `B` |nbsp| :diagtext: `to be defined - use @dynamic or provide a method implementation in this category` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-property-implicit-mismatch
---------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `primary property declaration is implicitly strong while redeclaration in class extension is weak` |
+---------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-property-matches-cocoa-ownership-rule
--------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property follows Cocoa naming convention for returning 'owned' objects` |
+-------------------------------------------------------------------------------------------------------------+
-Wobjc-property-no-attribute
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2018-04-17 13:48:36 +08:00
+-----------------------------------------------------------------------------------------------------+
2018-04-17 12:25:18 +08:00
|:warning: `warning:` |nbsp| :diagtext: `default property attribute 'assign' not appropriate for object` |
2018-04-17 13:48:36 +08:00
+-----------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed` |
+--------------------------------------------------------------------------------------------------------------------+
-Wobjc-property-synthesis
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `auto property synthesis will not synthesize property` |nbsp| :placeholder: `A` :diagtext: `; it will be implemented by its superclass, use @dynamic to acknowledge intention` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `auto property synthesis will not synthesize property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `because it is 'readwrite' but it will be synthesized 'readonly' via another property` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `auto property synthesis will not synthesize property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `because it cannot share an ivar with another synthesized property` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-protocol-method-implementation
-------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `category is implementing a method which will also be implemented by its primary class` |
+----------------------------------------------------------------------------------------------------------------------------+
-Wobjc-protocol-property-synthesis
----------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `auto property synthesis will not synthesize property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `declared in protocol` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-protocol-qualifiers
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parameterized class` |nbsp| :placeholder: `A` |nbsp| :diagtext: `already conforms to the protocols listed; did you forget a '\*'?` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-readonly-with-setter-property
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `setter cannot be specified for a readonly property` |
+-----------------------------------------------------------------------------------------+
-Wobjc-redundant-api-use
------------------------
Synonym for `-Wobjc-redundant-literal-use`_ .
-Wobjc-redundant-literal-use
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with a literal is redundant` |
+-------------------------------------------------------------------------------------------------------------------+
-Wobjc-root-class
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `class` |nbsp| :placeholder: `A` |nbsp| :diagtext: `defined without specifying a base class` |
+-------------------------------------------------------------------------------------------------------------------------------+
-Wobjc-string-compare
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `direct comparison of a string literal has undefined behavior` |
+---------------------------------------------------------------------------------------------------+
-Wobjc-string-concatenation
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `concatenated NSString literal for an NSArray expression - possibly missing a comma` |
+-------------------------------------------------------------------------------------------------------------------------+
2017-04-14 06:44:22 +08:00
-Wobjc-unsafe-perform-selector
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is incompatible with selectors that return a` |nbsp| |+------------------+| |nbsp| :diagtext: `type` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
| ||:diagtext: `vector` || |
| |+------------------+| |
+-------------------------------------------------------------------------------------------------------------------+--------------------+------------------------+
2016-09-12 13:58:29 +08:00
-Wodr
-----
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has incompatible definitions in different translation units` |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
-Wold-style-cast
----------------
**Diagnostic text:**
+------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of old-style cast` |
+------------------------------------------------------------+
-Wold-style-definition
----------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wopencl-unsupported-rgba
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `vector component name '` :placeholder: `A` :diagtext: `' is an OpenCL version 2.2 feature` |
+----------------------------------------------------------------------------------------------------------------------------+
-Wopenmp-clauses
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `aligned clause will be ignored because the requested alignment is not a power of 2` |
+-------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `zero linear step (` :placeholder: `A` |nbsp| |+-------------------------------------------------+|:diagtext: `should probably be const)` |
| || || |
| |+-------------------------------------------------+| |
| ||:diagtext: `and other variables in clause` |nbsp| || |
| |+-------------------------------------------------+| |
+---------------------------------------------------------------------------------+---------------------------------------------------+-------------------------------------+
-Wopenmp-loop-form
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initialization clause of OpenMP for loop is not in canonical form ('var = init' or 'T var = init')` |
+-----------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed` |
+-----------------------------------------------------------------------------------------------------------------------------+
-Wopenmp-target
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-01-21 03:27:09 +08:00
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `The OpenMP offloading target '` :placeholder: `A` :diagtext: `' is similar to target '` :placeholder: `B` :diagtext: `' already specified - will be ignored.` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration is not declared in any declare target region` |
+-----------------------------------------------------------------------------------------------+
-Woption-ignored
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `option '-ffine-grained-bitfield-accesses' cannot be enabled together with a sanitizer; flag ignored` |
+------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `option '` :placeholder: `A` :diagtext: `' was ignored by the PS4 toolchain, using '-fPIC'` |
+----------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mabicalls' option as it cannot be used with non position-independent code and the N64 ABI` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mlong-calls' option as it is not currently supported with` |nbsp| |+-----------------------------------------+|:diagtext: `-mabicalls` |
| || || |
| |+-----------------------------------------+| |
| ||:diagtext: `the implicit usage of` |nbsp| || |
| |+-----------------------------------------+| |
+-------------------------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
2016-09-12 13:58:29 +08:00
-Wout-of-line-declaration
-------------------------
This diagnostic is an error by default, but the flag `` -Wno-out-of-line-declaration `` can be used to disable the error.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `out-of-line declaration of a member must be a definition` |
+-------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wout-of-scope-function
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of out-of-scope declaration of` |nbsp| :placeholder: `A` |+-------------------------------------------------------------------------------------+|
| || ||
| |+-------------------------------------------------------------------------------------+|
| || |nbsp| :diagtext: `whose type is not compatible with that of an implicit declaration` ||
| |+-------------------------------------------------------------------------------------+|
+-------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wover-aligned
--------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires` |nbsp| :placeholder: `B` |nbsp| :diagtext: `bytes of alignment and the default allocator only guarantees` |nbsp| :placeholder: `C` |nbsp| :diagtext: `bytes` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Woverflow
----------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Woverlength-strings
--------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `string literal of length` |nbsp| :placeholder: `A` |nbsp| :diagtext: `exceeds maximum length` |nbsp| :placeholder: `B` |nbsp| :diagtext: `that` |nbsp| |+-------------------+| |nbsp| :diagtext: `compilers are required to support` |
| ||:diagtext: `C90` || |
| |+-------------------+| |
| ||:diagtext: `ISO C99` || |
| |+-------------------+| |
| ||:diagtext: `C++` || |
| |+-------------------+| |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------------+
-Woverloaded-shift-op-parentheses
---------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------+----------------+------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overloaded operator` |nbsp| |+--------------+| |nbsp| :diagtext: `has higher precedence than comparison operator` |
| ||:diagtext: `>>` || |
| |+--------------+| |
| ||:diagtext: `<<` || |
| |+--------------+| |
+------------------------------------------------------------------+----------------+------------------------------------------------------------------+
-Woverloaded-virtual
--------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+-----------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `hides overloaded virtual` |nbsp| |+---------------------+|
| ||:diagtext: `function` ||
| |+---------------------+|
| ||:diagtext: `functions` ||
| |+---------------------+|
+-----------------------------------------------------------------------------------------------+-----------------------+
2019-01-11 03:12:39 +08:00
-Woverride-init
2019-01-11 03:26:35 +08:00
---------------
2019-01-11 03:12:39 +08:00
Synonym for `-Winitializer-overrides`_ .
2016-09-12 13:58:29 +08:00
-Woverride-module
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overriding the module target triple with` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------+
-Woverriding-method-mismatch
----------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting distributed object modifiers on parameter type in declaration of` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting parameter types in declaration of` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting distributed object modifiers on return type in declaration of` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting return type in declaration of` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting variadic declaration of method and its implementation` |
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting parameter types in declaration of` |nbsp| :placeholder: `A` :diagtext: `:` |nbsp| :placeholder: `B` |nbsp| :diagtext: `vs` |nbsp| :placeholder: `C` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `conflicting return type in declaration of` |nbsp| :placeholder: `A` :diagtext: `:` |nbsp| :placeholder: `B` |nbsp| :diagtext: `vs` |nbsp| :placeholder: `C` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Woverriding-t-option
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overriding '` :placeholder: `A` :diagtext: `' option with '` :placeholder: `B` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------------------------+
-Wpacked
--------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `packed attribute is unnecessary for` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------+
-Wpadded
--------
**Diagnostic text:**
+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `padding` |nbsp| |+---------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `with` |nbsp| :placeholder: `C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext: `to align anonymous bit-field` |
| ||:diagtext: `struct` || ||:diagtext: `byte` ||| || |
| |+---------------------+| |+----------------+|+-------------+| |
| ||:diagtext: `interface` || ||:diagtext: `bit` |||:diagtext: `s` || |
| |+---------------------+| |+----------------+|+-------------+| |
| ||:diagtext: `class` || | | | |
| |+---------------------+| | | | |
+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+------------------------------------------------+
+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `padding` |nbsp| |+---------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `with` |nbsp| :placeholder: `C` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext: `to align` |nbsp| :placeholder: `E` |
| ||:diagtext: `struct` || ||:diagtext: `byte` ||| || |
| |+---------------------+| |+----------------+|+-------------+| |
| ||:diagtext: `interface` || ||:diagtext: `bit` |||:diagtext: `s` || |
| |+---------------------+| |+----------------+|+-------------+| |
| ||:diagtext: `class` || | | | |
| |+---------------------+| | | | |
+------------------------------------------------------+-----------------------+--------------------------------------------------------------------------------+------------------+---------------+----------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `padding size of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `with` |nbsp| :placeholder: `B` |nbsp| |+----------------+|+-------------+| |nbsp| :diagtext: `to alignment boundary` |
| ||:diagtext: `byte` ||| || |
| |+----------------+|+-------------+| |
| ||:diagtext: `bit` |||:diagtext: `s` || |
| |+----------------+|+-------------+| |
+--------------------------------------------------------------------------------------------------------------------------------------+------------------+---------------+-----------------------------------------+
-Wparentheses
-------------
This diagnostic is enabled by default.
2016-09-14 09:55:42 +08:00
Also controls `-Wbitwise-op-parentheses`_ , `-Wdangling-else`_ , `-Wlogical-not-parentheses`_ , `-Wlogical-op-parentheses`_ , `-Woverloaded-shift-op-parentheses`_ , `-Wparentheses-equality`_ , `-Wshift-op-parentheses`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `using the result of an assignment as a condition without parentheses` |
+-----------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has lower precedence than` |nbsp| :placeholder: `B` :diagtext: `;` |nbsp| :placeholder: `B` |nbsp| :diagtext: `will be evaluated first` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `operator '?:' has lower precedence than '` :placeholder: `A` :diagtext: `'; '` :placeholder: `A` :diagtext: `' will be evaluated first` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wparentheses-equality
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `equality comparison with extraneous parentheses` |
+--------------------------------------------------------------------------------------+
-Wpartial-availability
----------------------
Synonym for `-Wunguarded-availability`_ .
-Rpass
------
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Rpass-analysis
---------------
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :placeholder: `A` :diagtext: `; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop. If the arrays will always be independent specify '#pragma clang loop vectorize(assume\_safety)' before the loop or provide the '\_\_restrict\_\_' qualifier with the independent array arguments. Erroneous results will occur if these options are incorrectly applied!` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :placeholder: `A` :diagtext: `; allow reordering by specifying '#pragma clang loop vectorize(enable)' before the loop or by providing the compiler option '-ffast-math'.` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wpass-failed
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Rpass-missed
-------------
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Wpch-date-time
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+--------------------------------+-----------------------------------------------------+
|:warning: `warning:` |nbsp| |+------------------------------+| |nbsp| :diagtext: `uses \_\_DATE\_\_ or \_\_TIME\_\_` |
| ||:diagtext: `precompiled header` || |
| |+------------------------------+| |
| ||:diagtext: `module` || |
| |+------------------------------+| |
+---------------------------+--------------------------------+-----------------------------------------------------+
-Wpedantic
----------
2017-10-27 05:06:52 +08:00
Also controls `-Wc++11-extra-semi`_ , `-Wc++11-long-long`_ , `-Wc++14-binary-literal`_ , `-Wc11-extensions`_ , `-Wcomplex-component-init`_ , `-Wdeclaration-after-statement`_ , `-Wdollar-in-identifier-extension`_ , `-Wembedded-directive`_ , `-Wempty-translation-unit`_ , `-Wextended-offsetof`_ , `-Wflexible-array-extensions`_ , `-Wformat-pedantic`_ , `-Wfour-char-constants`_ , `-Wgnu-anonymous-struct`_ , `-Wgnu-auto-type`_ , `-Wgnu-binary-literal`_ , `-Wgnu-case-range`_ , `-Wgnu-complex-integer`_ , `-Wgnu-compound-literal-initializer`_ , `-Wgnu-conditional-omitted-operand`_ , `-Wgnu-empty-initializer`_ , `-Wgnu-empty-struct`_ , `-Wgnu-flexible-array-initializer`_ , `-Wgnu-flexible-array-union-member`_ , `-Wgnu-folding-constant`_ , `-Wgnu-imaginary-constant`_ , `-Wgnu-include-next`_ , `-Wgnu-label-as-value`_ , `-Wgnu-redeclared-enum`_ , `-Wgnu-statement-expression`_ , `-Wgnu-union-cast`_ , `-Wgnu-zero-line-directive`_ , `-Wgnu-zero-variadic-macro-arguments`_ , `-Wimport-preprocessor-directive-pedantic`_ , `-Wkeyword-macro`_ , `-Wlanguage-extension-token`_ , `-Wlong-long`_ , `-Wmicrosoft-charize`_ , `-Wmicrosoft-comment-paste`_ , `-Wmicrosoft-cpp-macro`_ , `-Wmicrosoft-end-of-file`_ , `-Wmicrosoft-enum-value`_ , `-Wmicrosoft-fixed-enum`_ , `-Wmicrosoft-flexible-array`_ , `-Wmicrosoft-redeclare-static`_ , `-Wnested-anon-types`_ , `-Wnullability-extension`_ , `-Woverlength-strings`_ , `-Wretained-language-linkage`_ , `-Wundefined-internal-type`_ , `-Wvla-extension`_ , `-Wzero-length-array`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'enable\_if' is a clang extension` |
+------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'diagnose\_if' is a clang extension` |
+--------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `designated initializers are a C99 feature` |
+--------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++ does not allow 'main' to be used by a program` |
+--------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
|:warning: `warning:` |nbsp| :diagtext: `C++98 requires an accessible copy constructor for class` |nbsp| :placeholder: `C` |nbsp| :diagtext: `when binding a reference to a temporary; was` |nbsp| |+---------------------+|
| ||:diagtext: `private` ||
| |+---------------------+|
| ||:diagtext: `protected` ||
| |+---------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------+--------------------+------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `anonymous` |nbsp| |+------------------+| |nbsp| :diagtext: `cannot be '` :placeholder: `B` :diagtext: `'` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
+--------------------------------------------------------+--------------------+------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no viable constructor` |nbsp| |+---------------------------------------+| |nbsp| :diagtext: `of type` |nbsp| :placeholder: `B` :diagtext: `; C++98 requires a copy constructor when binding a reference to a temporary` |
| ||:diagtext: `copying variable` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying parameter` || |
| |+---------------------------------------+| |
| ||:diagtext: `returning object` || |
| |+---------------------------------------+| |
| ||:diagtext: `throwing object` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying member subobject` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying array element` || |
| |+---------------------------------------+| |
| ||:diagtext: `allocating object` || |
| |+---------------------------------------+| |
| ||:diagtext: `copying temporary` || |
| |+---------------------------------------+| |
| ||:diagtext: `initializing base subobject` || |
| |+---------------------------------------+| |
| ||:diagtext: `initializing vector element` || |
| |+---------------------------------------+| |
| ||:diagtext: `capturing value` || |
| |+---------------------------------------+| |
+--------------------------------------------------------------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parameter` |nbsp| :placeholder: `A` |nbsp| :diagtext: `was not declared, defaulting to type 'int'` |
+--------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension` |
+--------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `qualifier in explicit instantiation of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires a template-id (a typedef is not permitted)` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `is used in an inline function with external linkage` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C forbids forward references to 'enum' types` |
+---------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C restricts enumerator values to range of 'int' (` :placeholder: `A` |nbsp| :diagtext: `is too` |nbsp| |+-----------------+|:diagtext: `)` |
| ||:diagtext: `small` || |
| |+-----------------+| |
| ||:diagtext: `large` || |
| |+-----------------+| |
+----------------------------------------------------------------------------------------------------------------------------------------------+-------------------+-------------+
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `size of static array must be an integer constant expression` |
+--------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `initializer for aggregate is not a compile-time constant` |
+-----------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `flexible array members are a C99 feature` |
+-------------------------------------------------------------------------------+
+---------------------------------------------------------------+-----------------------+--------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid application of '` |+---------------------+|:diagtext: `' to a function type` |
| ||:diagtext: `sizeof` || |
| |+---------------------+| |
| ||:diagtext: `alignof` || |
| |+---------------------+| |
| ||:diagtext: `vec\_step` || |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+--------------------------------+
+---------------------------------------------------------------+-----------------------+----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid application of '` |+---------------------+|:diagtext: `' to a void type` |
| ||:diagtext: `sizeof` || |
| |+---------------------+| |
| ||:diagtext: `alignof` || |
| |+---------------------+| |
| ||:diagtext: `vec\_step` || |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+----------------------------+
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C90 does not allow subscripting non-lvalue array` |
+-------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
|:warning: `warning:` |nbsp| :diagtext: `subscript of a pointer to void is a GNU extension` |
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C forbids taking the address of an expression of type 'void'` |
+-------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ordered comparison between pointer and zero (` :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` :diagtext: `) is an extension` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `equality comparison between function pointer and void pointer (` :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` :diagtext: `)` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `arithmetic on` |+---------------------+| |nbsp| :diagtext: `pointer` |+-------------+| |nbsp| :diagtext: `to void is a GNU extension` |
| || |nbsp| :diagtext: `a` || || || |
| |+---------------------+| |+-------------+| |
| || || ||:diagtext: `s` || |
| |+---------------------+| |+-------------+| |
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `arithmetic on` |+---------------------+| |nbsp| :diagtext: `pointer` |+-------------+| |nbsp| :diagtext: `to` |+-----------------------+| |nbsp| :diagtext: `function type` |+-------------+| |nbsp| :placeholder: `B` |+-------------------------------------------------+| |nbsp| :diagtext: `is a GNU extension` |
| || |nbsp| :diagtext: `a` || || || || |nbsp| :diagtext: `the` || || || || || |
| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| |
| || || ||:diagtext: `s` || || || ||:diagtext: `s` || ||+-----------------------------------------------+|| |
| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext: `and` |nbsp| :placeholder: `D` ||| |
| | | | | | | | | ||+-----------------------------------------------+|| |
| | | | | | | | | |+-------------------------------------------------+| |
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C does not support '++'/'--' on complex integer type` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C does not support '~' for complex conjugation of` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `complex numbers are an extension in a freestanding C99 implementation` |
+------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cast between pointer-to-function and pointer-to-object is an extension` |
+-------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion from array size expression of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| |+-----------------------+| |nbsp| :diagtext: `type` |nbsp| :placeholder: `C` |nbsp| :diagtext: `is a C++11 extension` |
| ||:diagtext: `integral` || |
| |+-----------------------+| |
| ||:diagtext: `enumeration` || |
| |+-----------------------+| |
+---------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+----------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext: `converts between void pointer and function pointer` |
| ||:diagtext: `assigning to different types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `passing to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `returning from function with different return type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `converting between types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `initializing with expression of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `kernel function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a member function; this may not be accepted by nvcc` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `C99 forbids conditional expressions with only one void side` |
+--------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `C99 forbids casting nonscalar type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to the same type` |
+-------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of the` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute is a C++14 extension` |
+---------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `use of the` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute is a C++17 extension` |
2016-09-14 09:51:10 +08:00
+---------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `types declared in an anonymous` |nbsp| |+------------------+| |nbsp| :diagtext: `are a Microsoft extension` |
| ||:diagtext: `struct` || |
| |+------------------+| |
| ||:diagtext: `union` || |
| |+------------------+| |
+-----------------------------------------------------------------------------+--------------------+---------------------------------------------+
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `void` |nbsp| |+--------------------+| |nbsp| :placeholder: `A` |nbsp| :diagtext: `should not return void expression` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `method` || |
| |+--------------------+| |
| ||:diagtext: `block` || |
| |+--------------------+| |
+---------------------------------------------------+----------------------+-----------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' cannot be signed or unsigned` |
+--------------------------------------------------------------------------------------------------+
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------+|:diagtext: `array size` |nbsp| |+---------------------+|:diagtext: `is a C99 feature` |
| ||:diagtext: `qualifier in` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| ||:diagtext: `static` |nbsp| || || || |
| |+--------------------------------+| |+---------------------+| |
| || || ||:diagtext: `'\[\*\] '` || |
| |+--------------------------------+| |+---------------------+| |
+---------------------------+----------------------------------+------------------------------+-----------------------+----------------------------+
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------+------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extra ';'` |nbsp| |+----------------------------------------------+|
| ||:diagtext: `outside of a function` ||
| |+----------------------------------------------+|
| ||+--------------------------------------------+||
| |||:diagtext: `inside a` |nbsp| :placeholder: `B` |||
| ||+--------------------------------------------+||
| |+----------------------------------------------+|
| ||:diagtext: `inside instance variable list` ||
| |+----------------------------------------------+|
| ||:diagtext: `after member function definition` ||
| |+----------------------------------------------+|
+--------------------------------------------------------+------------------------------------------------+
2016-09-14 09:51:10 +08:00
+-----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'\_\_thread' before '` :placeholder: `A` :diagtext: `'` |
+-----------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
|:warning: `warning:` |nbsp| :diagtext: `type-less parameter names in function declaration` |
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable declaration in for loop is a C99-specific feature` |
+-------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `compound literals are a C99-specific feature` |
+-----------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `commas at the end of enumerator lists are a C99-specific feature` |
+-------------------------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `commas at the end of enumerator lists are a C++11 extension` |
+--------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enumeration types with a fixed underlying type are a C++11 extension` |
+-----------------------------------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of GNU array range extension` |
+-----------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2016-09-14 09:51:10 +08:00
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `exception specification of '...' is a Microsoft extension` |
+------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attributes on` |nbsp| |+-------------------------+| |nbsp| :diagtext: `declaration are a C++17 extension` |
| ||:diagtext: `a namespace` || |
| |+-------------------------+| |
| ||:diagtext: `an enumerator` || |
| |+-------------------------+| |
+------------------------------------------------------------+---------------------------+-----------------------------------------------------+
2016-09-14 09:51:10 +08:00
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `extern templates are a C++11 extension` |
+-----------------------------------------------------------------------------+
+------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multi-line // comment` |
+------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `// comments are not allowed in this language` |
+-----------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no newline at end of file` |
+----------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of non-standard escape character '\\` :placeholder: `A` :diagtext: `'` |
+------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `hexadecimal floating constants are a C99 feature` |
+---------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:warning: `warning:` |nbsp| :diagtext: `hexadecimal floating literals are a C++17 feature` |
2016-09-14 09:51:10 +08:00
+----------------------------------------------------------------------------------------+
+---------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#ident is a language extension` |
+---------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#warning is a language extension` |
+-----------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comma operator in operand of #if` |
+-----------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_VA\_ARGS\_\_ can only appear in the expansion of a C99 variadic macro` |
+----------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variadic macros are a C99 feature` |
+------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `named variadic macros are a GNU extension` |
+--------------------------------------------------------------------------------+
2016-09-14 09:51:10 +08:00
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty macro arguments are a C99 feature` |
+------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `C requires #line number to be less than` |nbsp| :placeholder: `A` :diagtext: `, allowed as extension` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `macro expansion producing 'defined' has undefined behavior` |
+-------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wpedantic-core-features
------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `OpenCL extension` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is core feature or supported optional core feature - ignoring` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wpessimizing-move
------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `moving a temporary object prevents copy elision` |
+--------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `moving a local object in a return statement prevents copy elision` |
+--------------------------------------------------------------------------------------------------------+
-Wpointer-arith
---------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `arithmetic on` |+---------------------+| |nbsp| :diagtext: `pointer` |+-------------+| |nbsp| :diagtext: `to` |+-----------------------+| |nbsp| :diagtext: `function type` |+-------------+| |nbsp| :placeholder: `B` |+-------------------------------------------------+| |nbsp| :diagtext: `is a GNU extension` |
| || |nbsp| :diagtext: `a` || || || || |nbsp| :diagtext: `the` || || || || || |
| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| |+-------------------------------------------------+| |
| || || ||:diagtext: `s` || || || ||:diagtext: `s` || ||+-----------------------------------------------+|| |
| |+---------------------+| |+-------------+| |+-----------------------+| |+-------------+| ||| |nbsp| :diagtext: `and` |nbsp| :placeholder: `D` ||| |
| | | | | | | | | ||+-----------------------------------------------+|| |
| | | | | | | | | |+-------------------------------------------------+| |
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------+-------------------------+---------------------------------+---------------+------------------------+---------------------------------------------------+--------------------------------------+
+----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `subscript of a pointer to void is a GNU extension` |
+----------------------------------------------------------------------------------------+
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `arithmetic on` |+---------------------+| |nbsp| :diagtext: `pointer` |+-------------+| |nbsp| :diagtext: `to void is a GNU extension` |
| || |nbsp| :diagtext: `a` || || || |
| |+---------------------+| |+-------------+| |
| || || ||:diagtext: `s` || |
| |+---------------------+| |+-------------+| |
+----------------------------------------------------+-----------------------+---------------------------+---------------+----------------------------------------------+
+---------------------------------------------------------------+-----------------------+--------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid application of '` |+---------------------+|:diagtext: `' to a function type` |
| ||:diagtext: `sizeof` || |
| |+---------------------+| |
| ||:diagtext: `alignof` || |
| |+---------------------+| |
| ||:diagtext: `vec\_step` || |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+--------------------------------+
+---------------------------------------------------------------+-----------------------+----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid application of '` |+---------------------+|:diagtext: `' to a void type` |
| ||:diagtext: `sizeof` || |
| |+---------------------+| |
| ||:diagtext: `alignof` || |
| |+---------------------+| |
| ||:diagtext: `vec\_step` || |
| |+---------------------+| |
+---------------------------------------------------------------+-----------------------+----------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `subtraction of pointers to type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `of zero size has undefined behavior` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wpointer-bool-conversion
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' will evaluate to 'true' on first encounter` |
| ||:diagtext: `function call` || |
| |+-------------------------+| |
| ||:diagtext: `parameter` || |
| |+-------------------------+| |
+------------------------------------------------------+---------------------------+---------------------------------------------------------------------------------------------+
+-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `address of` |+----------------------------+| |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' will always evaluate to 'true'` |
| || || |
| |+----------------------------+| |
| || |nbsp| :diagtext: `function` || |
| |+----------------------------+| |
| || |nbsp| :diagtext: `array` || |
| |+----------------------------+| |
+-------------------------------------------------+------------------------------+---------------------------------------------------------------------------------+
-Wpointer-sign
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext: `converts between pointers to integer types with different sign` |
| ||:diagtext: `assigning to different types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `passing to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `returning from function with different return type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `converting between types` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `initializing with expression of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `sending to parameter of different type` || |
| |+--------------------------------------------------------------+| |
| ||:diagtext: `casting between types` || |
| |+--------------------------------------------------------------+| |
+---------------------------+----------------------------------------------------------------+----------------------------------------------------------------------------------+
-Wpointer-to-int-cast
---------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wpointer-type-mismatch
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pointer type mismatch` |
+------------------------------------------------------------+
-Wpotentially-evaluated-expression
----------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression with side effects will be evaluated despite being used as an operand to 'typeid'` |
+----------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wpragma-clang-attribute
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in '#pragma clang attribute push' region` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wpragma-once-outside-header
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma once in main file` |
+----------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wpragma-pack
-------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wpragma-pack-suspicious-include`_ .
**Diagnostic text:**
2018-09-13 02:27:21 +08:00
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the current #pragma pack alignment value is modified in the included file` |
+----------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unterminated '#pragma pack (push, ...)' at end of file` |
+---------------------------------------------------------------------------------------------+
-Wpragma-pack-suspicious-include
--------------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-default #pragma pack value changes the alignment of struct or union members in the included file` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wpragma-system-header-outside-header
-------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma system\_header ignored in main file` |
+----------------------------------------------------------------------------------+
-Wpragmas
---------
Some of the diagnostics controlled by this flag are enabled by default.
2017-10-27 05:06:52 +08:00
Also controls `-Wignored-pragmas`_ , `-Wpragma-clang-attribute`_ , `-Wpragma-pack`_ , `-Wunknown-pragmas`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma redefine\_extname is applicable to external C declarations only; not applied to` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+--------------------------------------------------------------------------------------------------------------------------------------+----------------------+------------------------+
-Wpredefined-identifier-outside-function
----------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `predefined identifier is only valid inside function` |
+------------------------------------------------------------------------------------------+
-Wprivate-extern
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `use of \_\_private\_extern\_\_ on a declaration may not produce external symbol private to the linkage unit and is deprecated` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wprivate-header
----------------
This diagnostic is an error by default, but the flag `` -Wno-private-header `` can be used to disable the error.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `use of private header from outside its module: '` :placeholder: `A` :diagtext: `'` |
+----------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wprivate-module
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `top-level module '` :placeholder: `A` :diagtext: `' in private module map, expected a submodule of '` :placeholder: `B` :diagtext: `'` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `module '` :placeholder: `A` :diagtext: `' already re-exported as '` :placeholder: `B` :diagtext: `'` |
+----------------------------------------------------------------------------------------------------------------------------------+
-Wprofile-instr-missing
-----------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------+
|:warning: `warning:` |nbsp| :diagtext: `profile data may be incomplete: of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `function` |+-------------+|:diagtext: `,` |nbsp| :placeholder: `B` |nbsp| |+-----------------+| |nbsp| :diagtext: `no data` |
| || || ||:diagtext: `:has` || |
| |+-------------+| |+-----------------+| |
| ||:diagtext: `s` || ||:diagtext: `:have` || |
| |+-------------+| |+-----------------+| |
+-----------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+---------------------------+
2017-01-21 03:27:09 +08:00
2016-09-12 13:58:29 +08:00
-Wprofile-instr-out-of-date
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+--------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `profile data may be out of date: of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `function` |+-------------+|:diagtext: `,` |nbsp| :placeholder: `B` |nbsp| |+-----------------+| |nbsp| :diagtext: `mismatched data that will be ignored` |
| || || ||:diagtext: `:has` || |
| |+-------------+| |+-----------------+| |
| ||:diagtext: `s` || ||:diagtext: `:have` || |
| |+-------------+| |+-----------------+| |
+------------------------------------------------------------------------------------------------------------------------------+---------------+---------------------------------------------+-------------------+--------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wprofile-instr-unprofiled
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no profile data available for file "` :placeholder: `A` :diagtext: `"` |
+--------------------------------------------------------------------------------------------------------+
-Wproperty-access-dot-syntax
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `not found on object of type` |nbsp| :placeholder: `B` :diagtext: `; did you mean to access property` |nbsp| :placeholder: `C` :diagtext: `?` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wproperty-attribute-mismatch
-----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property attribute in class extension does not match the primary class` |
+-------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' attribute on property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `does not match the property inherited from` |nbsp| :placeholder: `C` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `getter name mismatch between property redeclaration (` :placeholder: `B` :diagtext: `) and its original declaration (` :placeholder: `A` :diagtext: `)` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `attribute 'readonly' of property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `restricts attribute 'readwrite' of property inherited from` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wprotocol
----------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method` |nbsp| :placeholder: `A` |nbsp| :diagtext: `in protocol` |nbsp| :placeholder: `B` |nbsp| :diagtext: `not implemented` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wprotocol-property-synthesis-ambiguity
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property` |nbsp| |+--------------------------------------------------------------+| |nbsp| :diagtext: `was selected for synthesis` |
| ||+-------------------------------------------+ || |
| |||:diagtext: `of type` |nbsp| :placeholder: `B` | || |
| ||+-------------------------------------------+ || |
| |+--------------------------------------------------------------+| |
| ||+---------------------------------------------------------+ || |
| |||:diagtext: `with attribute '` :placeholder: `B` :diagtext: `'` | || |
| ||+---------------------------------------------------------+ || |
| |+--------------------------------------------------------------+| |
| ||+------------------------------------------------------------+|| |
| |||:diagtext: `without attribute '` :placeholder: `B` :diagtext: `'` ||| |
| ||+------------------------------------------------------------+|| |
| |+--------------------------------------------------------------+| |
| ||+-----------------------------------------------+ || |
| |||:diagtext: `with getter` |nbsp| :placeholder: `B` | || |
| ||+-----------------------------------------------+ || |
| |+--------------------------------------------------------------+| |
| ||+-----------------------------------------------+ || |
| |||:diagtext: `with setter` |nbsp| :placeholder: `B` | || |
| ||+-----------------------------------------------+ || |
| |+--------------------------------------------------------------+| |
+-------------------------------------------------------+----------------------------------------------------------------+----------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wqualified-void-return-type
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `function cannot return qualified void type` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------------------------------+
-Wrange-loop-analysis
---------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `loop variable` |nbsp| :placeholder: `A` |nbsp| |nbsp| :diagtext: `is initialized with a value of a different type` |nbsp| :diagtext: `resulting in a copy` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `loop variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `of type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `creates a copy from type` |nbsp| :placeholder: `C` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `loop variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is always a copy because the range of type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `does not return a reference` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wreadonly-iboutlet-property
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `readonly IBOutlet property` |nbsp| :placeholder: `A` |nbsp| :diagtext: `when auto-synthesized may not work correctly with 'nib' loader` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wreceiver-expr
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `receiver type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not 'id' or interface pointer, consider casting it to 'id'` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wreceiver-forward-class
------------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `receiver` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a forward class and corresponding @interface may not exist` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `receiver type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `for instance message is a forward declaration` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Wredeclared-class-member
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `class member cannot be redeclared` |
+------------------------------------------------------------------------+
-Wredundant-decls
-----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wredundant-move
----------------
**Diagnostic text:**
+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redundant move in return statement` |
+-------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wredundant-parens
------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redundant parentheses surrounding declarator` |
+-----------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wregister
----------
This diagnostic is enabled by default.
Also controls `-Wdeprecated-register`_ .
**Diagnostic text:**
+----------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
|:error: `error:` |nbsp| :diagtext: `ISO C++17 does not allow 'register' storage class specifier` |
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------------------+
-Wreinterpret-base-class
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'reinterpret\_cast'` |nbsp| |+----------------+| |nbsp| :diagtext: `class` |nbsp| :placeholder: `A` |nbsp| |+----------------+| |nbsp| :diagtext: `its` |nbsp| |+-----------------------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `behaves differently from 'static\_cast'` |
| ||:diagtext: `from` || ||:diagtext: `to` || ||:diagtext: `virtual base` || |
| |+----------------+| |+----------------+| |+-----------------------------------+| |
| ||:diagtext: `to` || ||:diagtext: `from` || ||:diagtext: `base at non-zero offset` || |
| |+----------------+| |+----------------+| |+-----------------------------------+| |
+------------------------------------------------------------------+------------------+---------------------------------------------------------+------------------+-------------------------------+-------------------------------------+-----------------------------------------------------------------------------------+
-Rremark-backend-plugin
-----------------------
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
-Wreorder
---------
**Diagnostic text:**
+---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+
|:warning: `warning:` |nbsp| |+----------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `will be initialized after` |nbsp| |+-----------------+| |nbsp| :placeholder: `D` |
| ||:diagtext: `field` || ||:diagtext: `field` || |
| |+----------------------+| |+-----------------+| |
| ||:diagtext: `base class` || ||:diagtext: `base` || |
| |+----------------------+| |+-----------------+| |
+---------------------------+------------------------+-----------------------------------------------------------------------------+-------------------+------------------------+
-Wrequires-super-attribute
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+----------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute cannot be applied to` |nbsp| |+--------------------------------+|
| ||:diagtext: `methods in protocols` ||
| |+--------------------------------+|
| ||:diagtext: `dealloc` ||
| |+--------------------------------+|
+-----------------------------------------------------------------------------------------------------+----------------------------------+
-Wreserved-id-macro
-------------------
**Diagnostic text:**
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `macro name is a reserved identifier` |
+--------------------------------------------------------------------------+
-Wreserved-user-defined-literal
-------------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++11-compat-reserved-user-defined-literal`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid suffix on literal; C++11 requires a space between literal and identifier` |
+-----------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `invalid suffix on literal; C++11 requires a space between literal and identifier` |
+-------------------------------------------------------------------------------------------------------------------+
-Wretained-language-linkage
---------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `friend function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `retaining previous language linkage is an extension` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wreturn-stack-address
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `returning address of label, which is local` |
+---------------------------------------------------------------------------------+
+--------------------------------------------------------+--------------------------+------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `returning` |nbsp| |+------------------------+| |nbsp| :diagtext: `local temporary object` |
| ||:diagtext: `address of` || |
| |+------------------------+| |
| ||:diagtext: `reference to` || |
| |+------------------------+| |
+--------------------------------------------------------+--------------------------+------------------------------------------+
+---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+------------------------+| |nbsp| :diagtext: `stack memory associated with local variable` |nbsp| :placeholder: `B` |nbsp| :diagtext: `returned` |
| ||:diagtext: `address of` || |
| |+------------------------+| |
| ||:diagtext: `reference to` || |
| |+------------------------+| |
+---------------------------+--------------------------+-------------------------------------------------------------------------------------------------------------------+
-Wreturn-type
-------------
This diagnostic is enabled by default.
Also controls `-Wreturn-type-c-linkage`_ .
**Diagnostic text:**
+-----------------------+---------------------------+---------------------------------------------------------------------+
|:error: `error:` |nbsp| |+-------------------------+| |nbsp| :placeholder: `A` |nbsp| :diagtext: `should not return a value` |
| ||:diagtext: `void function` || |
| |+-------------------------+| |
| ||:diagtext: `void method` || |
| |+-------------------------+| |
| ||:diagtext: `constructor` || |
| |+-------------------------+| |
| ||:diagtext: `destructor` || |
| |+-------------------------+| |
+-----------------------+---------------------------+---------------------------------------------------------------------+
+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `non-void` |nbsp| |+--------------------+| |nbsp| :placeholder: `A` |nbsp| :diagtext: `should return a value` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `method` || |
| |+--------------------+| |
+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `control reaches end of coroutine; which is undefined behavior because the promise type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `does not declare 'return\_void()'` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
2016-09-12 13:58:29 +08:00
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `control reaches end of non-void function` |
+-------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `control reaches end of non-void lambda` |
+-----------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `control may reach end of coroutine; which is undefined behavior because the promise type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `does not declare 'return\_void()'` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `control may reach end of non-void function` |
+---------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `control may reach end of non-void lambda` |
+-------------------------------------------------------------------------------+
+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `non-void` |nbsp| |+--------------------+| |nbsp| :placeholder: `A` |nbsp| :diagtext: `should return a value` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `method` || |
| |+--------------------+| |
+---------------------------------------------------+----------------------+-----------------------------------------------------------------+
-Wreturn-type-c-linkage
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has C-linkage specified, but returns user-defined type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `which is incompatible with C` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has C-linkage specified, but returns incomplete type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `which could be incompatible with C` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wrtti-for-exceptions
---------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicitly enabling rtti for exception handling` |
+--------------------------------------------------------------------------------------+
-Rsanitize-address
------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------+
|:remark: `remark:` |nbsp| :diagtext: `-fsanitize-address-field-padding applied to` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
|:remark: `remark:` |nbsp| :diagtext: `-fsanitize-address-field-padding ignored for` |nbsp| :placeholder: `A` |nbsp| :diagtext: `because it` |nbsp| |+------------------------------------+|
| ||:diagtext: `is not C++` ||
| |+------------------------------------+|
| ||:diagtext: `is packed` ||
| |+------------------------------------+|
| ||:diagtext: `is a union` ||
| |+------------------------------------+|
| ||:diagtext: `is trivially copyable` ||
| |+------------------------------------+|
| ||:diagtext: `has trivial destructor` ||
| |+------------------------------------+|
| ||:diagtext: `is standard layout` ||
| |+------------------------------------+|
| ||:diagtext: `is in a blacklisted file` ||
| |+------------------------------------+|
| ||:diagtext: `is blacklisted` ||
| |+------------------------------------+|
+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
-Wsection
---------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `section attribute is specified on redeclared variable` |
+--------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `section does not match previous declaration` |
+----------------------------------------------------------------------------------+
-Wselector
----------
Also controls `-Wselector-type-mismatch`_ .
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `no method with selector` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is implemented in this translation unit` |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
-Wselector-type-mismatch
------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `several methods with selector` |nbsp| :placeholder: `A` |nbsp| :diagtext: `of mismatched types are found for the @selector expression` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wself-assign
-------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wself-assign-field`_ .
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicitly assigning value of variable of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to itself` |
+------------------------------------------------------------------------------------------------------------------------------------------+
-Wself-assign-field
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------+-------------------------------+-----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `assigning` |nbsp| |+-----------------------------+| |nbsp| :diagtext: `to itself` |
| ||:diagtext: `field` || |
| |+-----------------------------+| |
| ||:diagtext: `instance variable` || |
| |+-----------------------------+| |
+--------------------------------------------------------+-------------------------------+-----------------------------+
-Wself-move
-----------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicitly moving variable of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to itself` |
+------------------------------------------------------------------------------------------------------------------------------+
-Wsemicolon-before-method-body
------------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `semicolon before method body is ignored` |
+------------------------------------------------------------------------------+
-Wsentinel
----------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------+-----------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing sentinel in` |nbsp| |+---------------------------+|
| ||:diagtext: `function call` ||
| |+---------------------------+|
| ||:diagtext: `method dispatch` ||
| |+---------------------------+|
| ||:diagtext: `block call` ||
| |+---------------------------+|
+------------------------------------------------------------------+-----------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `not enough variable arguments in` |nbsp| :placeholder: `A` |nbsp| :diagtext: `declaration to fit a sentinel` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsequence-point
----------------
Synonym for `-Wunsequenced`_ .
-Wserialized-diagnostics
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unable to open file` |nbsp| :placeholder: `A` |nbsp| :diagtext: `for serializing diagnostics (` :placeholder: `B` :diagtext: `)` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unable to merge a subprocess's serialized diagnostics` |
+--------------------------------------------------------------------------------------------+
-Wshadow
--------
2016-09-14 09:51:10 +08:00
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wshadow-field-in-constructor-modified`_ , `-Wshadow-ivar`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+--------------------------------------------------------------------+-------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration shadows a` |nbsp| |+-----------------------------------------------------------+|
| ||:diagtext: `local variable` ||
| |+-----------------------------------------------------------+|
| ||+-----------------------------------------------+ ||
| |||:diagtext: `variable in` |nbsp| :placeholder: `C` | ||
| ||+-----------------------------------------------+ ||
| |+-----------------------------------------------------------+|
| ||+---------------------------------------------------------+||
| |||:diagtext: `static data member of` |nbsp| :placeholder: `C` |||
| ||+---------------------------------------------------------+||
| |+-----------------------------------------------------------+|
| ||+--------------------------------------------+ ||
| |||:diagtext: `field of` |nbsp| :placeholder: `C` | ||
| ||+--------------------------------------------+ ||
| |+-----------------------------------------------------------+|
2017-04-14 06:44:22 +08:00
| ||+----------------------------------------------+ ||
| |||:diagtext: `typedef in` |nbsp| :placeholder: `C` | ||
| ||+----------------------------------------------+ ||
| |+-----------------------------------------------------------+|
| ||+-------------------------------------------------+ ||
| |||:diagtext: `type alias in` |nbsp| :placeholder: `C` | ||
| ||+-------------------------------------------------+ ||
| |+-----------------------------------------------------------+|
2016-09-12 13:58:29 +08:00
+--------------------------------------------------------------------+-------------------------------------------------------------+
-Wshadow-all
------------
2016-09-14 09:51:10 +08:00
Some of the diagnostics controlled by this flag are enabled by default.
2017-04-14 06:44:22 +08:00
Controls `-Wshadow`_ , `-Wshadow-field`_ , `-Wshadow-field-in-constructor`_ , `-Wshadow-uncaptured-local`_ .
-Wshadow-field
--------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-static data member '` :placeholder: `A` :diagtext: `' of '` :placeholder: `B` :diagtext: `' shadows member inherited from type '` :placeholder: `C` :diagtext: `'` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wshadow-field-in-constructor
-----------------------------
Also controls `-Wshadow-field-in-constructor-modified`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `constructor parameter` |nbsp| :placeholder: `A` |nbsp| :diagtext: `shadows the field` |nbsp| :placeholder: `B` |nbsp| :diagtext: `of` |nbsp| :placeholder: `C` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wshadow-field-in-constructor-modified
--------------------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `modifying constructor parameter` |nbsp| :placeholder: `A` |nbsp| :diagtext: `that shadows a field of` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wshadow-ivar
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `local declaration of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `hides instance variable` |
+------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wshadow-uncaptured-local
-------------------------
**Diagnostic text:**
+--------------------------------------------------------------------+-------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration shadows a` |nbsp| |+-----------------------------------------------------------+|
| ||:diagtext: `local variable` ||
| |+-----------------------------------------------------------+|
| ||+-----------------------------------------------+ ||
| |||:diagtext: `variable in` |nbsp| :placeholder: `C` | ||
| ||+-----------------------------------------------+ ||
| |+-----------------------------------------------------------+|
| ||+---------------------------------------------------------+||
| |||:diagtext: `static data member of` |nbsp| :placeholder: `C` |||
| ||+---------------------------------------------------------+||
| |+-----------------------------------------------------------+|
| ||+--------------------------------------------+ ||
| |||:diagtext: `field of` |nbsp| :placeholder: `C` | ||
| ||+--------------------------------------------+ ||
| |+-----------------------------------------------------------+|
2017-04-14 06:44:22 +08:00
| ||+----------------------------------------------+ ||
| |||:diagtext: `typedef in` |nbsp| :placeholder: `C` | ||
| ||+----------------------------------------------+ ||
| |+-----------------------------------------------------------+|
| ||+-------------------------------------------------+ ||
| |||:diagtext: `type alias in` |nbsp| :placeholder: `C` | ||
| ||+-------------------------------------------------+ ||
| |+-----------------------------------------------------------+|
2017-01-21 03:27:09 +08:00
+--------------------------------------------------------------------+-------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wshift-count-negative
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `shift count is negative` |
+--------------------------------------------------------------+
-Wshift-count-overflow
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `shift count >= width of type` |
+-------------------------------------------------------------------+
-Wshift-negative-value
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `shifting a negative signed value is undefined` |
+------------------------------------------------------------------------------------+
-Wshift-op-parentheses
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `operator '` :placeholder: `A` :diagtext: `' has lower precedence than '` :placeholder: `B` :diagtext: `'; '` :placeholder: `B` :diagtext: `' will be evaluated first` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wshift-overflow
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `signed shift result (` :placeholder: `A` :diagtext: `) requires` |nbsp| :placeholder: `B` |nbsp| :diagtext: `bits to represent, but` |nbsp| :placeholder: `C` |nbsp| :diagtext: `only has` |nbsp| :placeholder: `D` |nbsp| :diagtext: `bits` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wshift-sign-overflow
---------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `signed shift result (` :placeholder: `A` :diagtext: `) sets the sign bit of the shift expression's type (` :placeholder: `B` :diagtext: `) and becomes negative` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wshorten-64-to-32
------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion loses integer precision:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsign-compare
--------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of integers of different signs:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsign-conversion
-----------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion changes signedness:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `operand of ? changes signedness:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
-Wsign-promo
------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
2017-01-21 03:27:09 +08:00
-Wsigned-enum-bitfield
----------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `enums in the Microsoft ABI are signed integers by default; consider giving the enum` |nbsp| :placeholder: `A` |nbsp| :diagtext: `an unsigned underlying type to make this code portable` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wsizeof-array-argument
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `sizeof on array function parameter will return size of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `instead of` |nbsp| :placeholder: `B` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsizeof-array-decay
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `sizeof on pointer operation will return size of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `instead of` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsizeof-pointer-memaccess
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'` :placeholder: `A` :diagtext: `' call operates on objects of type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `while the size is based on a different type` |nbsp| :placeholder: `C` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument to 'sizeof' in` |nbsp| :placeholder: `A` |nbsp| :diagtext: `call is the same pointer type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `as the` |nbsp| |+-----------------------+|:diagtext: `; expected` |nbsp| :placeholder: `D` |nbsp| :diagtext: `or an explicit length` |
| ||:diagtext: `destination` || |
| |+-----------------------+| |
| ||:diagtext: `source` || |
| |+-----------------------+| |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+---------------------------------------------------------------------------------------+
2017-04-14 06:44:22 +08:00
-Wslash-u-filename
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'/U` :placeholder: `A` :diagtext: `' treated as the '/U' option` |
+--------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wsometimes-uninitialized
-------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is` |nbsp| |+--------------------+| |nbsp| :diagtext: `uninitialized whenever` |nbsp| |+------------------------------------------------------------------------------------------------------------+|
| ||:diagtext: `used` || ||+---------------------------------------------------------------+-------------------+ ||
| |+--------------------+| |||:diagtext: `'` :placeholder: `D` :diagtext: `' condition is` |nbsp| |+-----------------+| ||
| ||:diagtext: `captured` || ||| ||:diagtext: `true` || ||
| |+--------------------+| ||| |+-----------------+| ||
| | | ||| ||:diagtext: `false` || ||
| | | ||| |+-----------------+| ||
| | | ||+---------------------------------------------------------------+-------------------+ ||
| | | |+------------------------------------------------------------------------------------------------------------+|
| | | ||+-------------------------------------------------------+--------------------------------------------------+||
| | | |||:diagtext: `'` :placeholder: `D` :diagtext: `' loop` |nbsp| |+------------------------------------------------+|||
| | | ||| ||:diagtext: `is entered` ||||
| | | ||| |+------------------------------------------------+|||
| | | ||| ||:diagtext: `exits because its condition is false` ||||
| | | ||| |+------------------------------------------------+|||
| | | ||+-------------------------------------------------------+--------------------------------------------------+||
| | | |+------------------------------------------------------------------------------------------------------------+|
| | | ||+-------------------------------------------------------+--------------------------------------------------+||
| | | |||:diagtext: `'` :placeholder: `D` :diagtext: `' loop` |nbsp| |+------------------------------------------------+|||
| | | ||| ||:diagtext: `condition is true` ||||
| | | ||| |+------------------------------------------------+|||
| | | ||| ||:diagtext: `exits because its condition is false` ||||
| | | ||| |+------------------------------------------------+|||
| | | ||+-------------------------------------------------------+--------------------------------------------------+||
| | | |+------------------------------------------------------------------------------------------------------------+|
| | | ||+----------------------------------------------------------------------+ ||
| | | |||:diagtext: `switch` |nbsp| :placeholder: `D` |nbsp| :diagtext: `is taken` | ||
| | | ||+----------------------------------------------------------------------+ ||
| | | |+------------------------------------------------------------------------------------------------------------+|
| | | ||:diagtext: `its declaration is reached` ||
| | | |+------------------------------------------------------------------------------------------------------------+|
| | | ||+---------------------------------------------+ ||
| | | |||:placeholder: `D` |nbsp| :diagtext: `is called` | ||
| | | ||+---------------------------------------------+ ||
| | | |+------------------------------------------------------------------------------------------------------------+|
+-----------------------------------------------------------------------------------------------------+----------------------+--------------------------------------------------+--------------------------------------------------------------------------------------------------------------+
-Wsource-uses-openmp
--------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `OpenMP only allows an ordered construct with the simd clause nested in a simd construct` |
+------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unexpected '#pragma omp ...' in program` |
+------------------------------------------------------------------------------+
-Wspir-compat
-------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `sampler initializer has invalid` |nbsp| :placeholder: `A` |nbsp| :diagtext: `bits` |
+----------------------------------------------------------------------------------------------------------------------+
-Wstack-protector
-----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstatic-float-init
-------------------
This diagnostic is enabled by default.
Also controls `-Wgnu-static-float-init`_ .
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `in-class initializer for static data member of type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `requires 'constexpr' specifier` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wstatic-in-inline
------------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `is used in an inline function with external linkage` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `is used in an inline function with external linkage` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+-----------------------------------------------------+----------------------+-----------------------------------------------------------------------------------------------+
-Wstatic-inline-explicit-instantiation
--------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------+--------------------+--------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '` |+------------------+|:diagtext: `' keyword on explicit template instantiation` |
| ||:diagtext: `static` || |
| |+------------------+| |
| ||:diagtext: `inline` || |
| |+------------------+| |
+-------------------------------------------------+--------------------+--------------------------------------------------------+
-Wstatic-local-in-inline
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `non-constant static local variable in inline function may be different in different files` |
+--------------------------------------------------------------------------------------------------------------------------------+
-Wstatic-self-init
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `static variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is suspiciously used within its own initialization` |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
-Wstrict-aliasing
-----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-aliasing=0
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-aliasing=1
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-aliasing=2
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow
-----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow=0
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow=1
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow=2
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow=3
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow=4
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-overflow=5
-------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wstrict-prototypes
-------------------
2017-01-21 03:27:09 +08:00
**Diagnostic text:**
+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext: `a prototype` |
| ||:diagtext: `function declaration is not` || |
| |+------------------------------------------------------------+| |
2017-10-27 05:06:52 +08:00
| ||:diagtext: `block declaration is not` || |
| |+------------------------------------------------------------+| |
2017-01-21 03:27:09 +08:00
| ||:diagtext: `old-style function definition is not preceded by` || |
| |+------------------------------------------------------------+| |
+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
-Wstrict-prototypes
-------------------
**Diagnostic text:**
+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `this` |nbsp| |+------------------------------------------------------------+| |nbsp| :diagtext: `a prototype` |
| ||:diagtext: `function declaration is not` || |
| |+------------------------------------------------------------+| |
2017-10-27 05:06:52 +08:00
| ||:diagtext: `block declaration is not` || |
| |+------------------------------------------------------------+| |
2017-01-21 03:27:09 +08:00
| ||:diagtext: `old-style function definition is not preceded by` || |
| |+------------------------------------------------------------+| |
+---------------------------------------------------+--------------------------------------------------------------+-------------------------------+
2016-09-12 13:58:29 +08:00
-Wstrict-selector-match
-----------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple methods named` |nbsp| :placeholder: `A` |nbsp| :diagtext: `found` |
+--------------------------------------------------------------------------------------------------------------+
-Wstring-compare
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `result of comparison against` |nbsp| |+----------------------------+| |nbsp| :diagtext: `is unspecified (use strncmp instead)` |
| ||:diagtext: `a string literal` || |
| |+----------------------------+| |
| ||:diagtext: `@encode` || |
| |+----------------------------+| |
+---------------------------------------------------------------------------+------------------------------+--------------------------------------------------------+
-Wstring-conversion
-------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `implicit conversion turns string literal into bool:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wstring-plus-char
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `adding` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to a string pointer does not append to the string` |
+------------------------------------------------------------------------------------------------------------------------------------------+
-Wstring-plus-int
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `adding` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to a string does not append to the string` |
+----------------------------------------------------------------------------------------------------------------------------------+
-Wstrlcpy-strlcat-size
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `size argument in` |nbsp| :placeholder: `A` |nbsp| :diagtext: `call appears to be size of the source; expected the size of the destination` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wstrncat-size
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the value of the size argument in 'strncat' is too large, might lead to a buffer overflow` |
+--------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `size argument in 'strncat' call appears to be size of the source` |
+-------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the value of the size argument to 'strncat' is wrong` |
+-------------------------------------------------------------------------------------------+
-Wsuper-class-method-mismatch
-----------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `method parameter type` |nbsp| :diagtext: `does not match super class method parameter type` |
+--------------------------------------------------------------------------------------------------------------------------------+
-Wswitch
--------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `overflow converting case value to switch condition type (` :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` :diagtext: `)` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+-----------------------------------------------------------------------------------------------+ ||
| |||:diagtext: `:enumeration value` |nbsp| :placeholder: `B` |nbsp| :diagtext: `not handled in switch` | ||
| ||+-----------------------------------------------------------------------------------------------+ ||
| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |||:diagtext: `:enumeration values` |nbsp| :placeholder: `B` |nbsp| :diagtext: `and` |nbsp| :placeholder: `C` |nbsp| :diagtext: `not handled in switch` | ||
| ||+-----------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |||:diagtext: `:enumeration values` |nbsp| :placeholder: `B` :diagtext: `,` |nbsp| :placeholder: `C` :diagtext: `, and` |nbsp| :placeholder: `D` |nbsp| :diagtext: `not handled in switch` | ||
| ||+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
| |||:diagtext: `:` :placeholder: `A` |nbsp| :diagtext: `enumeration values not handled in switch:` |nbsp| :placeholder: `B` :diagtext: `,` |nbsp| :placeholder: `C` :diagtext: `,` |nbsp| :placeholder: `D` :diagtext: `...` |||
| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
| |+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+---------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `case value not in enumerated type` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------------------------+
-Wswitch-bool
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `switch condition has boolean value` |
+-------------------------------------------------------------------------+
-Wswitch-default
----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wswitch-enum
-------------
**Diagnostic text:**
+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+----------------------------------------------------------------------------------------------------------+ ||
| |||:diagtext: `:enumeration value` |nbsp| :placeholder: `B` |nbsp| :diagtext: `not explicitly handled in switch` | ||
| ||+----------------------------------------------------------------------------------------------------------+ ||
| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |||:diagtext: `:enumeration values` |nbsp| :placeholder: `B` |nbsp| :diagtext: `and` |nbsp| :placeholder: `C` |nbsp| :diagtext: `not explicitly handled in switch` | ||
| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |||:diagtext: `:enumeration values` |nbsp| :placeholder: `B` :diagtext: `,` |nbsp| :placeholder: `C` :diagtext: `, and` |nbsp| :placeholder: `D` |nbsp| :diagtext: `not explicitly handled in switch` | ||
| ||+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ||
| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
| |||:diagtext: `:` :placeholder: `A` |nbsp| :diagtext: `enumeration values not explicitly handled in switch:` |nbsp| :placeholder: `B` :diagtext: `,` |nbsp| :placeholder: `C` :diagtext: `,` |nbsp| :placeholder: `D` :diagtext: `...` |||
| ||+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+||
| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+|
+---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wsync-fetch-and-nand-semantics-changed
---------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the semantics of this intrinsic changed with GCC version 4.4 - the newer semantics are provided here` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wsynth
-------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wtautological-compare
----------------------
Some of the diagnostics controlled by this flag are enabled by default.
2017-10-27 05:06:52 +08:00
Also controls `-Wtautological-constant-compare`_ , `-Wtautological-overlap-compare`_ , `-Wtautological-pointer-compare`_ , `-Wtautological-undefined-compare`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+---------------------------+---------------------------+--------------------------------------------------+------------------------+
|:warning: `warning:` |nbsp| |+-------------------------+|:diagtext: `comparison always evaluates to` |nbsp| |+----------------------+|
| ||:diagtext: `self-` || ||:diagtext: `false` ||
| |+-------------------------+| |+----------------------+|
| ||:diagtext: `array` |nbsp| || ||:diagtext: `true` ||
| |+-------------------------+| |+----------------------+|
| | | ||:diagtext: `a constant` ||
| | | |+----------------------+|
+---------------------------+---------------------------+--------------------------------------------------+------------------------+
+-------------------------------------------------------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `bitwise comparison always evaluates to` |nbsp| |+-----------------+|
| ||:diagtext: `false` ||
| |+-----------------+|
| ||:diagtext: `true` ||
| |+-----------------+|
+-------------------------------------------------------------------------------------+-------------------+
2017-10-27 05:06:52 +08:00
-Wtautological-constant-compare
-------------------------------
This diagnostic is enabled by default.
Also controls `-Wtautological-constant-out-of-range-compare`_ , `-Wtautological-unsigned-enum-zero-compare`_ , `-Wtautological-unsigned-zero-compare`_ .
**Diagnostic text:**
+---------------------------------------------------------+------------------+--------------------------------+------------------+-------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison` |nbsp| |+----------------+| |nbsp| :placeholder: `C` |nbsp| |+----------------+| |nbsp| :diagtext: `is always` |nbsp| |+-----------------+|
| ||:placeholder: `D` || ||:placeholder: `B` || ||:diagtext: `false` ||
| |+----------------+| |+----------------+| |+-----------------+|
| ||:placeholder: `B` || ||:placeholder: `D` || ||:diagtext: `true` ||
| |+----------------+| |+----------------+| |+-----------------+|
+---------------------------------------------------------+------------------+--------------------------------+------------------+-------------------------------------+-------------------+
2016-09-12 13:58:29 +08:00
-Wtautological-constant-out-of-range-compare
--------------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of` |nbsp| |+----------------------------------------------+| |nbsp| :diagtext: `with` |nbsp| |+--------------------------------------------------------+| |nbsp| :diagtext: `is always` |nbsp| |+-----------------+|
| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext: `false` ||
| |||:diagtext: `constant` |nbsp| :placeholder: `A` ||| |||:diagtext: `expression of type` |nbsp| :placeholder: `C` ||| |+-----------------+|
| ||+--------------------------------------------+|| ||+------------------------------------------------------+|| ||:diagtext: `true` ||
| |+----------------------------------------------+| |+--------------------------------------------------------+| |+-----------------+|
| ||:diagtext: `true` || ||:diagtext: `boolean expression` || | |
| |+----------------------------------------------+| |+--------------------------------------------------------+| | |
| ||:diagtext: `false` || | | | |
| |+----------------------------------------------+| | | | |
+------------------------------------------------------------+------------------------------------------------+--------------------------------+----------------------------------------------------------+-------------------------------------+-------------------+
-Wtautological-overlap-compare
------------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `overlapping comparisons always evaluate to` |nbsp| |+-----------------+|
| ||:diagtext: `false` ||
| |+-----------------+|
| ||:diagtext: `true` ||
| |+-----------------+|
+-----------------------------------------------------------------------------------------+-------------------+
-Wtautological-pointer-compare
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of nonnull` |nbsp| |+-------------------------+| |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `'` |nbsp| |+-----------------------+|:diagtext: `equal to a null pointer is '` |+-----------------+|:diagtext: `' on first encounter` |
| ||:diagtext: `function call` || ||:diagtext: `not` |nbsp| || ||:diagtext: `true` || |
| |+-------------------------+| |+-----------------------+| |+-----------------+| |
| ||:diagtext: `parameter` || || || ||:diagtext: `false` || |
| |+-------------------------+| |+-----------------------+| |+-----------------+| |
+--------------------------------------------------------------------+---------------------------+----------------------------------------------------------+-------------------------+----------------------------------------+-------------------+--------------------------------+
+------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of` |nbsp| |+----------------------+| |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `'` |nbsp| |+-----------------------+|:diagtext: `equal to a null pointer is always` |nbsp| |+-----------------+|
| ||:diagtext: `address of` || ||:diagtext: `not` |nbsp| || ||:diagtext: `true` ||
| |+----------------------+| |+-----------------------+| |+-----------------+|
| ||:diagtext: `function` || || || ||:diagtext: `false` ||
| |+----------------------+| |+-----------------------+| |+-----------------+|
| ||:diagtext: `array` || | | | |
| |+----------------------+| | | | |
+------------------------------------------------------------+------------------------+----------------------------------------------------------+-------------------------+-----------------------------------------------------+-------------------+
-Wtautological-undefined-compare
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+|
| ||:diagtext: `true` ||
| |+-----------------+|
| ||:diagtext: `false` ||
| |+-----------------+|
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `'this' pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to` |nbsp| |+-----------------+|
| ||:diagtext: `true` ||
| |+-----------------+|
| ||:diagtext: `false` ||
| |+-----------------+|
+------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+
2017-10-27 05:06:52 +08:00
-Wtautological-unsigned-enum-zero-compare
-----------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of` |nbsp| |+------------------------------------+| |nbsp| :placeholder: `C` |nbsp| |+------------------------------------+| |nbsp| :diagtext: `is always` |nbsp| |+-----------------+|
| ||:placeholder: `D` || ||:diagtext: `unsigned enum expression` || ||:diagtext: `false` ||
| |+------------------------------------+| |+------------------------------------+| |+-----------------+|
| ||:diagtext: `unsigned enum expression` || ||:placeholder: `D` || ||:diagtext: `true` ||
| |+------------------------------------+| |+------------------------------------+| |+-----------------+|
+------------------------------------------------------------+--------------------------------------+--------------------------------+--------------------------------------+-------------------------------------+-------------------+
-Wtautological-unsigned-zero-compare
------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-------------------------------------+-------------------+
|:warning: `warning:` |nbsp| :diagtext: `comparison of` |nbsp| |+-------------------------------+| |nbsp| :placeholder: `C` |nbsp| |+-------------------------------+| |nbsp| :diagtext: `is always` |nbsp| |+-----------------+|
| ||:placeholder: `D` || ||:diagtext: `unsigned expression` || ||:diagtext: `false` ||
| |+-------------------------------+| |+-------------------------------+| |+-----------------+|
| ||:diagtext: `unsigned expression` || ||:placeholder: `D` || ||:diagtext: `true` ||
| |+-------------------------------+| |+-------------------------------+| |+-----------------+|
+------------------------------------------------------------+---------------------------------+--------------------------------+---------------------------------+-------------------------------------+-------------------+
2016-09-12 13:58:29 +08:00
-Wtentative-definition-incomplete-type
--------------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `tentative definition of variable with internal linkage has incomplete non-array type` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------------------------------------------------------------------------------+
-Wthread-safety
---------------
2016-09-14 09:55:42 +08:00
Controls `-Wthread-safety-analysis`_ , `-Wthread-safety-attributes`_ , `-Wthread-safety-precise`_ , `-Wthread-safety-reference`_ .
2016-09-12 13:58:29 +08:00
-Wthread-safety-analysis
------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' must be acquired before '` :placeholder: `C` :diagtext: `'` |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `Cycle in acquired\_before/after dependencies, starting with '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot resolve lock expression` |
+---------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `acquiring` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' that is already held` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expecting` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' to be held at start of each loop` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expecting` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' to be held at the end of function` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `cannot call function '` :placeholder: `B` :diagtext: `' while` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `C` :diagtext: `' is held` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `calling function '` :placeholder: `B` :diagtext: `' requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||+------------------------------------------+ ||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||+------------------------------------------+ ||
| |+--------------------------------------------------------+|
| ||+------------------------------------------------------+||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| ||+------------------------------------------------------+||
| |+--------------------------------------------------------+|
+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' is acquired exclusively and shared in the same scope` |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' is not held on every path through here` |
+------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' is still held at the end of function` |
+----------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `releasing` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' that was not held` |
+--------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+
|:warning: `warning:` |nbsp| :diagtext: `releasing` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' using` |nbsp| |+---------------------+| |nbsp| :diagtext: `access, expected` |nbsp| |+---------------------+| |nbsp| :diagtext: `access` |
| ||:diagtext: `shared` || ||:diagtext: `shared` || |
| |+---------------------+| |+---------------------+| |
| ||:diagtext: `exclusive` || ||:diagtext: `exclusive` || |
| |+---------------------+| |+---------------------+| |
+----------------------------------------------------------------------------------------------------------------------------------------+-----------------------+--------------------------------------------+-----------------------+--------------------------+
+---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+
|:warning: `warning:` |nbsp| |+-------------------+| |nbsp| :diagtext: `the value pointed to by '` :placeholder: `A` :diagtext: `' requires holding` |nbsp| |+---------------------------------+|
| ||:diagtext: `reading` || ||:diagtext: `any mutex` ||
| |+-------------------+| |+---------------------------------+|
| ||:diagtext: `writing` || ||:diagtext: `any mutex exclusively` ||
| |+-------------------+| |+---------------------------------+|
+---------------------------+---------------------+---------------------------------------------------------------------------------------------------+-----------------------------------+
+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------+| |nbsp| :diagtext: `the value pointed to by '` :placeholder: `B` :diagtext: `' requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||:diagtext: `reading` || ||+------------------------------------------+ ||
| |+-------------------+| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||:diagtext: `writing` || ||+------------------------------------------+ ||
| |+-------------------+| |+--------------------------------------------------------+|
| | | ||+------------------------------------------------------+||
| | | |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| | | ||+------------------------------------------------------+||
| | | |+--------------------------------------------------------+|
+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+
|:warning: `warning:` |nbsp| |+-------------------+| |nbsp| :diagtext: `variable '` :placeholder: `A` :diagtext: `' requires holding` |nbsp| |+---------------------------------+|
| ||:diagtext: `reading` || ||:diagtext: `any mutex` ||
| |+-------------------+| |+---------------------------------+|
| ||:diagtext: `writing` || ||:diagtext: `any mutex exclusively` ||
| |+-------------------+| |+---------------------------------+|
+---------------------------+---------------------+------------------------------------------------------------------------------------+-----------------------------------+
+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------+| |nbsp| :diagtext: `variable '` :placeholder: `B` :diagtext: `' requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||:diagtext: `reading` || ||+------------------------------------------+ ||
| |+-------------------+| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||:diagtext: `writing` || ||+------------------------------------------+ ||
| |+-------------------+| |+--------------------------------------------------------+|
| | | ||+------------------------------------------------------+||
| | | |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| | | ||+------------------------------------------------------+||
| | | |+--------------------------------------------------------+|
+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-Wthread-safety-attributes
--------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `invalid capability name '` :placeholder: `A` :diagtext: `'; capability name must be 'mutex' or 'role'` |
+----------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute requires arguments whose type is annotated with 'capability' attribute; type here is` |nbsp| :placeholder: `B` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute can only be applied in a context annotated with 'capability("mutex")' attribute` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `only applies to pointer types; type here is` |nbsp| :placeholder: `B` |
+----------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute because its argument is invalid` |
+------------------------------------------------------------------------------------------------------------------------------------+
-Wthread-safety-beta
--------------------
**Diagnostic text:**
+------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `Thread safety beta warning.` |
+------------------------------------------------------------------+
-Wthread-safety-negative
------------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `acquiring` |nbsp| :placeholder: `A` |nbsp| :diagtext: `'` :placeholder: `B` :diagtext: `' requires negative capability '` :placeholder: `C` :diagtext: `'` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wthread-safety-precise
-----------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `calling function '` :placeholder: `B` :diagtext: `' requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||+------------------------------------------+ ||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||+------------------------------------------+ ||
| |+--------------------------------------------------------+|
| ||+------------------------------------------------------+||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| ||+------------------------------------------------------+||
| |+--------------------------------------------------------+|
+---------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------+| |nbsp| :diagtext: `the value pointed to by '` :placeholder: `B` :diagtext: `' requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||:diagtext: `reading` || ||+------------------------------------------+ ||
| |+-------------------+| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||:diagtext: `writing` || ||+------------------------------------------+ ||
| |+-------------------+| |+--------------------------------------------------------+|
| | | ||+------------------------------------------------------+||
| | | |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| | | ||+------------------------------------------------------+||
| | | |+--------------------------------------------------------+|
+---------------------------+---------------------+---------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| |+-------------------+| |nbsp| :diagtext: `variable '` :placeholder: `B` :diagtext: `' requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||:diagtext: `reading` || ||+------------------------------------------+ ||
| |+-------------------+| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||:diagtext: `writing` || ||+------------------------------------------+ ||
| |+-------------------+| |+--------------------------------------------------------+|
| | | ||+------------------------------------------------------+||
| | | |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| | | ||+------------------------------------------------------+||
| | | |+--------------------------------------------------------+|
+---------------------------+---------------------+------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-Wthread-safety-reference
-------------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `passing variable '` :placeholder: `B` :diagtext: `' by reference requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||+------------------------------------------+ ||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||+------------------------------------------+ ||
| |+--------------------------------------------------------+|
| ||+------------------------------------------------------+||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| ||+------------------------------------------------------+||
| |+--------------------------------------------------------+|
+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `passing the value that '` :placeholder: `B` :diagtext: `' points to by reference requires holding` |nbsp| :placeholder: `A` |nbsp| |+--------------------------------------------------------+|
| ||+------------------------------------------+ ||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `'` | ||
| ||+------------------------------------------+ ||
| |+--------------------------------------------------------+|
| ||+------------------------------------------------------+||
| |||:diagtext: `'` :placeholder: `C` :diagtext: `' exclusively` |||
| ||+------------------------------------------------------+||
| |+--------------------------------------------------------+|
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------+
-Wthread-safety-verbose
-----------------------
**Diagnostic text:**
+---------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `Thread safety verbose warning.` |
+---------------------------------------------------------------------+
-Wtrigraphs
-----------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `trigraph converted to '` :placeholder: `A` :diagtext: `' character` |
+-----------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `trigraph ends block comment` |
+------------------------------------------------------------------+
+-------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `trigraph ignored` |
+-------------------------------------------------------+
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignored trigraph would end block comment` |
+-------------------------------------------------------------------------------+
-Wtype-limits
-------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wtype-safety
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `specified` |nbsp| :placeholder: `A` |nbsp| :diagtext: `type tag requires a null pointer` |
+----------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `doesn't match specified` |nbsp| :placeholder: `B` |nbsp| :diagtext: `type tag` |nbsp| |+---------------------------------------------------+|
| ||+-------------------------------------------------+||
| |||:diagtext: `that requires` |nbsp| :placeholder: `D` |||
| ||+-------------------------------------------------+||
| |+---------------------------------------------------+|
| || ||
| |+---------------------------------------------------+|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+
+---------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `this type tag was not designed to be used with this function` |
+---------------------------------------------------------------------------------------------------+
-Wtypedef-redefinition
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redefinition of typedef` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is a C11 feature` |
+--------------------------------------------------------------------------------------------------------------------------+
-Wtypename-missing
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `missing 'typename' prior to dependent type name '` :placeholder: `A` :placeholder: `B` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wunable-to-open-stats-file
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unable to open statistics output file '` :placeholder: `A` :diagtext: `': '` :placeholder: `B` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wunavailable-declarations
--------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `may be unavailable because the receiver type is unknown` |
+----------------------------------------------------------------------------------------------------------------------+
-Wundeclared-selector
---------------------
**Diagnostic text:**
+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `undeclared selector` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `undeclared selector` |nbsp| :placeholder: `A` :diagtext: `; did you mean` |nbsp| :placeholder: `B` :diagtext: `?` |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
-Wundef
-------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not defined, evaluates to 0` |
+---------------------------------------------------------------------------------------------+
-Wundefined-bool-conversion
---------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference cannot be bound to dereferenced null pointer in well-defined C++ code; pointer may be assumed to always convert to true` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
-Wundefined-func-template
-------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instantiation of function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `required here, but no definition is available` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wundefined-inline
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `inline function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not defined` |
+----------------------------------------------------------------------------------------------------------------+
-Wundefined-internal
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+----------------------+-----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `has internal linkage but is not defined` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+---------------------------+----------------------+-----------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wundefined-internal-type
-------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++ requires a definition in this translation unit for` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `because its type does not have linkage` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+---------------------------------------------------------------------------------------------------------+----------------------+----------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wundefined-reinterpret-cast
----------------------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `dereference of type` |nbsp| :placeholder: `B` |nbsp| :diagtext: `that was reinterpret\_cast from type` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has undefined behavior` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reinterpret\_cast from` |nbsp| :placeholder: `A` |nbsp| :diagtext: `to` |nbsp| :placeholder: `B` |nbsp| :diagtext: `has undefined behavior` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wundefined-var-template
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `instantiation of variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `required here, but no definition is available` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunevaluated-expression
------------------------
This diagnostic is enabled by default.
Also controls `-Wpotentially-evaluated-expression`_ .
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression with side effects has no effect in an unevaluated context` |
+-----------------------------------------------------------------------------------------------------------+
-Wunguarded-availability
------------------------
2017-10-27 05:06:52 +08:00
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wunguarded-availability-new`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is only available on` |nbsp| :placeholder: `B` |nbsp| :placeholder: `C` |nbsp| :diagtext: `or newer` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
2017-10-27 05:06:52 +08:00
-Wunguarded-availability-new
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is only available on` |nbsp| :placeholder: `B` |nbsp| :placeholder: `C` |nbsp| :diagtext: `or newer` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunicode
---------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incomplete universal character name; treating as '\\' followed by identifier` |
+-------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\\` :placeholder: `A` |nbsp| :diagtext: `used with no following hex digits; treating as '\\' followed by identifier` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `universal character name refers to a surrogate character` |
+-----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `universal character names are only valid in C99 or C++; treating as '\\' followed by identifier` |
+--------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `universal character names are only valid in C99 or C++` |
+---------------------------------------------------------------------------------------------+
-Wunicode-whitespace
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `treating Unicode character as whitespace` |
+-------------------------------------------------------------------------------+
-Wuninitialized
---------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wsometimes-uninitialized`_ , `-Wstatic-self-init`_ .
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `base class` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is uninitialized when used here to access` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is uninitialized when used here` |
+-----------------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not yet bound to a value when used here` |
+--------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `block pointer variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is uninitialized when captured by block` |
+------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is uninitialized when used within its own initialization` |
+---------------------------------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `reference` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not yet bound to a value when used within its own initialization` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------------------------------------------------------------------------+-------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is uninitialized when` |nbsp| |+-----------------------------+|
| ||:diagtext: `used here` ||
| |+-----------------------------+|
| ||:diagtext: `captured by block` ||
| |+-----------------------------+|
+------------------------------------------------------------------------------------------------------------------------+-------------------------------+
-Wunknown-argument
------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown argument ignored in clang-cl: '` :placeholder: `A` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------------------+
-Wunknown-attributes
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown attribute` |nbsp| :placeholder: `A` |nbsp| :diagtext: `ignored` |
+-----------------------------------------------------------------------------------------------------------+
-Wunknown-escape-sequence
-------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown escape sequence '\\` :placeholder: `A` :diagtext: `'` |
+-----------------------------------------------------------------------------------------------+
-Wunknown-pragmas
-----------------
Some of the diagnostics controlled by this flag are enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected 'ON' or 'OFF' or 'DEFAULT' in pragma` |
+------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expected end of directive in pragma` |
+--------------------------------------------------------------------------+
+-----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown pragma in STDC namespace` |
+-----------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma diagnostic pop could not pop, no matching push` |
+--------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'` |
+--------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma diagnostic expected option name (e.g. "-Wundef")` |
+----------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unexpected token in pragma diagnostic` |
+----------------------------------------------------------------------------+
+-------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown pragma ignored` |
+-------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma include\_alias expected '` :placeholder: `A` :diagtext: `'` |
+----------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma include\_alias expected include filename` |
+--------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `angle-bracketed include <` :placeholder: `A` :diagtext: `> cannot be aliased to double-quoted include "` :placeholder: `B` :diagtext: `"` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `double-quoted include "` :placeholder: `A` :diagtext: `" cannot be aliased to angle-bracketed include <` :placeholder: `B` :diagtext: `>` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma warning expected '` :placeholder: `A` :diagtext: `'` |
+----------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma warning expected a warning number` |
+--------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma warning(push, level) requires a level between 0 and 4` |
+----------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `#pragma warning expected 'push', 'pop', 'default', 'disable', 'error', 'once', 'suppress', 1, 2, 3, or 4` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `pragma STDC FENV\_ACCESS ON is not supported, ignoring pragma` |
+----------------------------------------------------------------------------------------------------+
-Wunknown-sanitizers
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown sanitizer '` :placeholder: `A` :diagtext: `' ignored` |
+-----------------------------------------------------------------------------------------------+
-Wunknown-warning-option
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown warning group '` :placeholder: `A` :diagtext: `', ignored` |
+----------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown` |nbsp| |+-------------------+| |nbsp| :diagtext: `option '` :placeholder: `B` :diagtext: `'` |+------------------------------------------------------------+|
| ||:diagtext: `warning` || || ||
| |+-------------------+| |+------------------------------------------------------------+|
| ||:diagtext: `remark` || ||+----------------------------------------------------------+||
| |+-------------------+| |||:diagtext: `; did you mean '` :placeholder: `D` :diagtext: `'?` |||
| | | ||+----------------------------------------------------------+||
| | | |+------------------------------------------------------------+|
+------------------------------------------------------+---------------------+---------------------------------------------------------+--------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unknown` |nbsp| :placeholder: `A` |nbsp| :diagtext: `warning specifier: '` :placeholder: `B` :diagtext: `'` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
-Wunnamed-type-template-args
----------------------------
Some of the diagnostics controlled by this flag are enabled by default.
Also controls `-Wc++98-compat-unnamed-type-template-args`_ .
**Diagnostic text:**
+--------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `template argument uses unnamed type` |
+--------------------------------------------------------------------------+
-Wunneeded-internal-declaration
-------------------------------
**Diagnostic text:**
+---------------------------+----------------------+---------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| |+--------------------+| |nbsp| :placeholder: `B` |nbsp| :diagtext: `is not needed and will not be emitted` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+---------------------------+----------------------+---------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'static' function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `declared in header file should be declared 'static inline'` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunneeded-member-function
--------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `member function` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not needed and will not be emitted` |
+---------------------------------------------------------------------------------------------------------------------------------------+
-Wunreachable-code
------------------
Also controls `-Wunreachable-code-loop-increment`_ .
**Diagnostic text:**
+------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `code will never be executed` |
+------------------------------------------------------------------+
-Wunreachable-code-aggressive
-----------------------------
Controls `-Wunreachable-code`_ , `-Wunreachable-code-break`_ , `-Wunreachable-code-return`_ .
-Wunreachable-code-break
------------------------
**Diagnostic text:**
+---------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'break' will never be executed` |
+---------------------------------------------------------------------+
-Wunreachable-code-loop-increment
---------------------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `loop will run at most once (loop increment never executed)` |
+-------------------------------------------------------------------------------------------------+
-Wunreachable-code-return
-------------------------
**Diagnostic text:**
+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `'return' will never be executed` |
+----------------------------------------------------------------------+
-Wunsequenced
-------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `multiple unsequenced modifications to` |nbsp| :placeholder: `A` |
+----------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unsequenced modification and access to` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wunsupported-abs
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mabs=2008' option because the '` :placeholder: `A` :diagtext: `' architecture does not support it` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mabs=legacy' option because the '` :placeholder: `A` :diagtext: `' architecture does not support it` |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunsupported-availability-guard
--------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+
|:warning: `warning:` |nbsp| |+----------------------------------+| |nbsp| :diagtext: `does not guard availability here; use if (` |+----------------------------------+|:diagtext: `) instead` |
| ||:diagtext: `@available` || ||:diagtext: `@available` || |
| |+----------------------------------+| |+----------------------------------+| |
| ||:diagtext: `\_\_builtin\_available` || ||:diagtext: `\_\_builtin\_available` || |
| |+----------------------------------+| |+----------------------------------+| |
+---------------------------+------------------------------------+--------------------------------------------------------------+------------------------------------+---------------------+
2016-09-12 13:58:29 +08:00
-Wunsupported-cb
----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mcompact-branches=' option because the '` :placeholder: `A` :diagtext: `' architecture does not support it` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunsupported-dll-base-class-template
-------------------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `propagating dll attribute to` |nbsp| |+----------------------------------+| |nbsp| :diagtext: `base class template without dll attribute is not supported` |
| ||:diagtext: `already instantiated` || |
| |+----------------------------------+| |
| ||:diagtext: `explicitly specialized` || |
| |+----------------------------------+| |
+---------------------------------------------------------------------------+------------------------------------+------------------------------------------------------------------------------+
-Wunsupported-friend
--------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `dependent nested name specifier '` :placeholder: `A` :diagtext: `' for friend template declaration is not supported; ignoring this friend declaration` |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `dependent nested name specifier '` :placeholder: `A` :diagtext: `' for friend class declaration is not supported; turning off access control for` |nbsp| :placeholder: `B` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wunsupported-gpopt
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mgpopt' option as it cannot be used with` |nbsp| |+-----------------------------------------+|:diagtext: `-mabicalls` |
| || || |
| |+-----------------------------------------+| |
| ||:diagtext: `the implicit usage of` |nbsp| || |
| |+-----------------------------------------+| |
+--------------------------------------------------------------------------------------------------+-------------------------------------------+----------------------+
2016-09-12 13:58:29 +08:00
-Wunsupported-nan
-----------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mnan=2008' option because the '` :placeholder: `A` :diagtext: `' architecture does not support it` |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring '-mnan=legacy' option because the '` :placeholder: `A` :diagtext: `' architecture does not support it` |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunsupported-visibility
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `target does not support 'protected' visibility; using 'default'` |
+------------------------------------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wunusable-partial-specialization
---------------------------------
This diagnostic is an error by default, but the flag `` -Wno-unusable-partial-specialization `` can be used to disable the error.
**Diagnostic text:**
+-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| |+--------------------+| |nbsp| :diagtext: `template partial specialization contains` |nbsp| |+--------------------------------+| |nbsp| :diagtext: `that cannot be deduced; this partial specialization will never be used` |
| ||:diagtext: `class` || ||:diagtext: `a template parameter` || |
| |+--------------------+| |+--------------------------------+| |
| ||:diagtext: `variable` || ||:diagtext: `template parameters` || |
| |+--------------------+| |+--------------------------------+| |
+-----------------------+----------------------+--------------------------------------------------------------------+----------------------------------+------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wunused
--------
Some of the diagnostics controlled by this flag are enabled by default.
2017-01-21 03:27:09 +08:00
Controls `-Wunused-argument`_ , `-Wunused-function`_ , `-Wunused-label`_ , `-Wunused-lambda-capture`_ , `-Wunused-local-typedef`_ , `-Wunused-private-field`_ , `-Wunused-property-ivar`_ , `-Wunused-value`_ , `-Wunused-variable`_ .
2016-09-12 13:58:29 +08:00
-Wunused-argument
-----------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wunused-command-line-argument
------------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
2017-10-27 05:06:52 +08:00
+-------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument '` :placeholder: `A` :diagtext: `' requires profile-guided optimization information` |
+-------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+---------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `joined argument expects additional value: '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` :diagtext: `: '` :placeholder: `B` :diagtext: `' input unused` |+--------------------------------------------------------------------+|
| ||+------------------------------------------------------------------+||
| ||| |nbsp| :diagtext: `when '` :placeholder: `D` :diagtext: `' is present` |||
| ||+------------------------------------------------------------------+||
| |+--------------------------------------------------------------------+|
| || ||
| |+--------------------------------------------------------------------+|
+----------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` :diagtext: `: '` :placeholder: `B` :diagtext: `' input unused in cpp mode` |
+----------------------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` :diagtext: `: previously preprocessed input` |+---------------------------------------------------------------------------+|
| ||+-------------------------------------------------------------------------+||
| ||| |nbsp| :diagtext: `unused when '` :placeholder: `C` :diagtext: `' is present` |||
| ||+-------------------------------------------------------------------------+||
| |+---------------------------------------------------------------------------+|
| || ||
| |+---------------------------------------------------------------------------+|
+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+
+---------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `argument unused during compilation: '` :placeholder: `A` :diagtext: `'` |
+---------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+----------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `the flag '` :placeholder: `A` :diagtext: `' has been deprecated and will be ignored` |
+----------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wunused-comparison
-------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------+-----------------------------------------+--------------------------------------------+
|:warning: `warning:` |nbsp| |+---------------------------------------+| |nbsp| :diagtext: `comparison result unused` |
| ||+----------------+--------------------+|| |
| |||+--------------+|:diagtext: `equality` ||| |
| |||| || ||| |
| |||+--------------+| ||| |
| ||||:diagtext: `in` || ||| |
| |||+--------------+| ||| |
| ||+----------------+--------------------+|| |
| |+---------------------------------------+| |
| ||:diagtext: `relational` || |
| |+---------------------------------------+| |
+---------------------------+-----------------------------------------+--------------------------------------------+
-Wunused-const-variable
-----------------------
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused variable` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------+
-Wunused-exception-parameter
----------------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused exception parameter` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------+
-Wunused-function
-----------------
Also controls `-Wunneeded-internal-declaration`_ .
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused function` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------+
-Wunused-getter-return-value
----------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `property access result unused - getters should not be used for side effects` |
+------------------------------------------------------------------------------------------------------------------+
-Wunused-label
--------------
**Diagnostic text:**
+---------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused label` |nbsp| :placeholder: `A` |
+---------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wunused-lambda-capture
-----------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `lambda capture` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not` |nbsp| |+------------------------------------------------+|
| ||:diagtext: `used` ||
| |+------------------------------------------------+|
| ||:diagtext: `required to be captured for this use` ||
| |+------------------------------------------------+|
+---------------------------------------------------------------------------------------------------------------+--------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wunused-local-typedef
----------------------
**Diagnostic text:**
+-----------------------------------------------------+------------------------+------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused` |nbsp| |+----------------------+| |nbsp| :placeholder: `B` |
| ||:diagtext: `typedef` || |
| |+----------------------+| |
| ||:diagtext: `type alias` || |
| |+----------------------+| |
+-----------------------------------------------------+------------------------+------------------------+
-Wunused-local-typedefs
-----------------------
Synonym for `-Wunused-local-typedef`_ .
-Wunused-macros
---------------
**Diagnostic text:**
+--------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `macro is not used` |
+--------------------------------------------------------+
-Wunused-member-function
------------------------
Also controls `-Wunneeded-member-function`_ .
**Diagnostic text:**
+-------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused member function` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------+
-Wunused-parameter
------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused parameter` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------+
-Wunused-private-field
----------------------
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `private field` |nbsp| :placeholder: `A` |nbsp| :diagtext: `is not used` |
+-----------------------------------------------------------------------------------------------------------+
-Wunused-property-ivar
----------------------
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ivar` |nbsp| :placeholder: `A` |nbsp| :diagtext: `which backs the property is not referenced in this property's accessor` |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wunused-result
---------------
This diagnostic is enabled by default.
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring return value of function declared with` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
-Wunused-template
-----------------
Also controls `-Wunneeded-internal-declaration`_ .
**Diagnostic text:**
+-----------------------------------------------------+----------------------+----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused` |nbsp| |+--------------------+| |nbsp| :diagtext: `template` |nbsp| :placeholder: `B` |
| ||:diagtext: `function` || |
| |+--------------------+| |
| ||:diagtext: `variable` || |
| |+--------------------+| |
+-----------------------------------------------------+----------------------+----------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wunused-value
--------------
This diagnostic is enabled by default.
2016-09-14 09:55:42 +08:00
Also controls `-Wunevaluated-expression`_ , `-Wunused-comparison`_ , `-Wunused-result`_ .
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ignoring return value of function declared with` |nbsp| :placeholder: `A` |nbsp| :diagtext: `attribute` |
+-------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `container access result unused - container access should not be used for side effects` |
+----------------------------------------------------------------------------------------------------------------------------+
+---------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression result unused` |
+---------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression result unused; should this cast be to 'void'?` |
+-----------------------------------------------------------------------------------------------+
-Wunused-variable
-----------------
Also controls `-Wunused-const-variable`_ .
**Diagnostic text:**
+------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `unused variable` |nbsp| :placeholder: `A` |
+------------------------------------------------------------------------------+
-Wunused-volatile-lvalue
------------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `expression result unused; assign into a variable to force a volatile load` |
+----------------------------------------------------------------------------------------------------------------+
-Wused-but-marked-unused
------------------------
**Diagnostic text:**
+---------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `was marked unused but was used` |
+---------------------------------------------------------------------------------------------+
-Wuser-defined-literals
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------+----------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `user-defined literal suffixes not starting with '\_' are reserved` |+--------------------------------------------------+|
| ||:diagtext: `; no literal will invoke this operator` ||
| |+--------------------------------------------------+|
| || ||
| |+--------------------------------------------------+|
+--------------------------------------------------------------------------------------------------------+----------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wuser-defined-warnings
-----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
The text of this diagnostic is not controlled by Clang.
2016-09-12 13:58:29 +08:00
-Wvarargs
---------
This diagnostic is enabled by default.
**Diagnostic text:**
+-----------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `second argument to 'va\_start' is not the last named parameter` |
+-----------------------------------------------------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `second argument to 'va\_arg' is of promotable type` |nbsp| :placeholder: `A` :diagtext: `; this va\_arg has undefined behavior because arguments will be promoted to` |nbsp| :placeholder: `B` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `passing` |nbsp| |+---------------------------------------------------------------+| |nbsp| :diagtext: `to 'va\_start' has undefined behavior` |
| ||:diagtext: `an object that undergoes default argument promotion` || |
| |+---------------------------------------------------------------+| |
| ||:diagtext: `an object of reference type` || |
| |+---------------------------------------------------------------+| |
| ||:diagtext: `a parameter declared with the 'register' keyword` || |
| |+---------------------------------------------------------------+| |
+------------------------------------------------------+-----------------------------------------------------------------+---------------------------------------------------------+
-Wvariadic-macros
-----------------
2017-10-27 05:06:52 +08:00
Some of the diagnostics controlled by this flag are enabled by default.
2016-09-12 13:58:29 +08:00
**Diagnostic text:**
+--------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `named variadic macros are a GNU extension` |
+--------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+-----------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `\_\_VA\_OPT\_\_ can only appear in the expansion of a variadic macro` |
+-----------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variadic macros are a C99 feature` |
+------------------------------------------------------------------------+
2017-01-21 03:27:09 +08:00
-Wvec-elem-size
---------------
This diagnostic is an error by default, but the flag `` -Wno-vec-elem-size `` can be used to disable the error.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:error: `error:` |nbsp| :diagtext: `vector operands do not have the same elements sizes (` :placeholder: `A` |nbsp| :diagtext: `and` |nbsp| :placeholder: `B` :diagtext: `)` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wvector-conversion
-------------------
**Diagnostic text:**
+------------------------------------------------------------------------+----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `incompatible vector types` |nbsp| |+--------------------------------------------------------------+|
| ||:diagtext: `assigning to different types` ||
| |+--------------------------------------------------------------+|
| ||:diagtext: `passing to parameter of different type` ||
| |+--------------------------------------------------------------+|
| ||:diagtext: `returning from function with different return type` ||
| |+--------------------------------------------------------------+|
| ||:diagtext: `converting between types` ||
| |+--------------------------------------------------------------+|
| ||:diagtext: `initializing with expression of different type` ||
| |+--------------------------------------------------------------+|
| ||:diagtext: `sending to parameter of different type` ||
| |+--------------------------------------------------------------+|
| ||:diagtext: `casting between types` ||
| |+--------------------------------------------------------------+|
+------------------------------------------------------------------------+----------------------------------------------------------------+
-Wvector-conversions
--------------------
Synonym for `-Wvector-conversion`_ .
-Wvexing-parse
--------------
This diagnostic is enabled by default.
**Diagnostic text:**
+----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `empty parentheses interpreted as a function declaration` |
+----------------------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parentheses were disambiguated as a function declaration` |
+-----------------------------------------------------------------------------------------------+
2017-10-27 05:06:52 +08:00
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `parentheses were disambiguated as redundant parentheses around declaration of variable named` |nbsp| :placeholder: `A` |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wvisibility
------------
This diagnostic is enabled by default.
**Diagnostic text:**
+---------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `declaration of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will not be visible outside of this function` |
+---------------------------------------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `redefinition of` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will not be visible outside of this function` |
+----------------------------------------------------------------------------------------------------------------------------------------------+
-Wvla
-----
**Diagnostic text:**
+-----------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable length array used` |
+-----------------------------------------------------------------+
-Wvla-extension
---------------
**Diagnostic text:**
+-------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `variable length arrays are a C99 feature` |
+-------------------------------------------------------------------------------+
-Wvoid-ptr-dereference
----------------------
This diagnostic is enabled by default.
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++ does not allow indirection on operand of type` |nbsp| :placeholder: `A` |
+--------------------------------------------------------------------------------------------------------------------+
-Wvolatile-register-var
-----------------------
This diagnostic flag exists for GCC compatibility, and has no effect in Clang.
-Wweak-template-vtables
-----------------------
**Diagnostic text:**
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `explicit template instantiation` |nbsp| :placeholder: `A` |nbsp| :diagtext: `will emit a vtable in every translation unit` |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wweak-vtables
--------------
**Diagnostic text:**
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :placeholder: `A` |nbsp| :diagtext: `has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit` |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Wwritable-strings
------------------
This diagnostic is enabled by default.
Also controls `-Wdeprecated-writable-strings`_ .
**Diagnostic text:**
+-------------------------------------------------------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `ISO C++11 does not allow conversion from string literal to` |nbsp| :placeholder: `A` |
+-------------------------------------------------------------------------------------------------------------------------+
-Wwrite-strings
---------------
Synonym for `-Wwritable-strings`_ .
2017-10-27 05:06:52 +08:00
-Wzero-as-null-pointer-constant
-------------------------------
**Diagnostic text:**
+--------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `zero as null pointer constant` |
+--------------------------------------------------------------------+
2016-09-12 13:58:29 +08:00
-Wzero-length-array
-------------------
**Diagnostic text:**
+------------------------------------------------------------------------+
|:warning: `warning:` |nbsp| :diagtext: `zero size arrays are an extension` |
+------------------------------------------------------------------------+