小编pac*_*222的帖子

奇怪的初始化在C中

我有这段代码,我不知道它是如何工作的

#include <stdio.h>

int main(void)
{
    int numero = ({const int i = 10; i+10;});

    printf("%d\n", numero); // Prints 20

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么如果我删除第二部分(i + 10;),编译器会出错?为什么括号必要?

谢谢^^!

c

9
推荐指数
1
解决办法
157
查看次数

强制重新实现继承类中的静态函数

我有一个带有插件(动态库)的C++程序.在主程序中,我想执行一个静态函数来检查我是否可以创建这种类型的对象.

没有动态库的示例(不需要理解问题):

#include "libs/parent.h"
#include "libs/one.h"
#include "libs/two.h"

int main(int argc, char * argv[])
{
    Parent* obj;

    if (One::match(argv[1]))
        obj = new One();
    else if (Two::match(argv[1]))
        obj = new Two();
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个名为Parent的接口类.所有插件都继承自此类.理想情况下,我在Parent命名匹配中有一个虚拟静态函数,并且所有插件都需要重新实现此函数.

这段代码的问题是我不能用C++做静态虚函数,所以我不知道如何解决这个问题.

对不起英语,我尽我所能

c++

5
推荐指数
1
解决办法
649
查看次数

操作员的Pyparsing问题

我做了一个带有pyparsing的语法,我有一个问题.语法试图解析搜索查询(使用运算符优先级,括号等),我需要空格像和运算符一样工作.

例如,这工作正常:

(word and word) or word
Run Code Online (Sandbox Code Playgroud)

但这失败了:

(word word) or word
Run Code Online (Sandbox Code Playgroud)

我希望第二个查询像第一个查询一样工作.

我的实际语法是:

WWORD = printables.replace("(", "").replace(")", "")
QUOTED = quotedString.setParseAction(removeQuotes)

OAND = CaselessLiteral("and")
OOR = CaselessLiteral("or")
ONOT = "-"

TERM = (QUOTED | WWORD)

EXPRESSION = operatorPrecedence(TERM,
    [
        (ONOT, 1, opAssoc.RIGHT),
        (OAND, 2, opAssoc.LEFT),
        (OOR, 2, opAssoc.LEFT)
    ])

STRING = OneOrMore(EXPRESSION) + StringEnd()
Run Code Online (Sandbox Code Playgroud)

python pyparsing

3
推荐指数
1
解决办法
812
查看次数

翻译更严格

今天,我在代码中修复了一个愚蠢的错误.很简单,问题是:

def f():
    return 2

2 == f
Run Code Online (Sandbox Code Playgroud)

我忘了在句子中写括号,所以我将指针函数与数字进行了比较.

好的,我的问题:

有没有办法改变解释器更严格的代码?显示更多警告,例如......

谢谢^^

python

1
推荐指数
1
解决办法
191
查看次数

标签 统计

python ×2

c ×1

c++ ×1

pyparsing ×1