我有这段代码,我不知道它是如何工作的
#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++程序.在主程序中,我想执行一个静态函数来检查我是否可以创建这种类型的对象.
没有动态库的示例(不需要理解问题):
#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++做静态虚函数,所以我不知道如何解决这个问题.
对不起英语,我尽我所能
我做了一个带有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) 今天,我在代码中修复了一个愚蠢的错误.很简单,问题是:
def f():
return 2
2 == f
Run Code Online (Sandbox Code Playgroud)
我忘了在句子中写括号,所以我将指针函数与数字进行了比较.
好的,我的问题:
有没有办法改变解释器更严格的代码?显示更多警告,例如......
谢谢^^