warning: left-hand operand of comma expression has no effect for语句中编译错误,求原因

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了warning: left-hand operand of comma expression has no effect for语句中编译错误,求原因相关的知识,希望对你有一定的参考价值。

if (ifx == 0)
int i;
for (i = 0, i < CONFIG_BRI_MAX_PORT_NUMBER, i++)
if (g_lldp.hardwares[i])
hardware = g_lldp.hardwares[i];

/*报文封装发送*/


else
hardware = lldp_get_hardware(event->ifx);

/*报文封装发送*/

参考技术A for( ; ; )是分号,不是逗号。

如何获得warnings.warn发出警告而不忽略该行?

我正在尝试使用基于文档中显示的示例的代码片段来引发DeprecationWarninghttp://docs.python.org/2/library/warnings.html#warnings.warn

官方

def deprecation(message):
    warnings.warn(message, DeprecationWarning, stacklevel=2)

import warnings
warnings.warn("This is a warnings.", DeprecationWarning, stacklevel=2) is None  # returns True

我已经尝试删除stacklevel参数,将其设置为负数,0,2和20000.警告总是被静默吞下。它不会发出警告或引发异常。它只是忽略该行并返回None。文档没有提到忽略的标准。发出消息,使warnings.warn正确发出Userwarning.

可能导致这种情况的原因以及如何警告实际发出警告?

答案

来自文档:

默认情况下,Python会安装几个警告过滤器,这些过滤器可以被传递给-W的命令行选项覆盖并调用filterwarnings()。

  • DeprecationWarning和PendingDeprecationWarning以及ImportWarning将被忽略。
  • 除非给出一次或两次-b选项,否则忽略BytesWarning;在这种情况下,此警告可以打印(-b)或转换为异常(-bb)。

默认情况下,DeprecationWarning被忽略。您可以使用以下内容更改过滤器:

warnings.simplefilter('always', DeprecationWarning)

现在你的警告应该打印出来:

>>> import warnings
>>> warnings.simplefilter('always', DeprecationWarning)
>>> warnings.warn('test', DeprecationWarning)
/home/guest/.env/bin/ipython:1: DeprecationWarning: test
  #!/home/guest/.env/bin/python
另一答案

警告模块根据特定条件实施警告过滤。您可以通过打印warnings.filters来显示默认过滤器:

$ python -c "import warnings; print warnings.filters"
[('ignore', None, <type 'exceptions.DeprecationWarning'>, None, 0),
 ('ignore', None, <type 'exceptions.PendingDeprecationWarning'>, None, 0),
 ('ignore', None, <type 'exceptions.ImportWarning'>, None, 0),
 ('ignore', None, <type 'exceptions.BytesWarning'>, None, 0)]

如您所见,默认情况下会忽略DeprecationWarning。您可以使用warnings模块中的函数和-W command-line option到Python来配置过滤器 - 有关详细信息,请参阅文档。

例:

$ python -Wall
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import warnings
>>> warnings.warn("test", DeprecationWarning)
__main__:1: DeprecationWarning: test
另一答案

$ python -Wall Python 2.7.3(默认,2013年9月26日,20:03:06)关于linux2的[GCC 4.6.3]输入“help”,“copyright”,“credits”或“license”以获取更多信息。

导入警告warnings.warn(“test”,DeprecationWarning)main:1:DeprecationWarning:test

以上是关于warning: left-hand operand of comma expression has no effect for语句中编译错误,求原因的主要内容,如果未能解决你的问题,请参考以下文章

BetaFlight深入传感设计之八:坐标系

Codeforces Round #469 (Div. 2)

log.warning

如何获得warnings.warn发出警告而不忽略该行?

控制warning信息在控制台的显示

Python忽略warning警告错误