小编Kon*_*lph的帖子

没有警告的返回语句后的代码

我们刚刚在我们的代码库中发现了一个问题,即语句在 return 语句之后。

例如

std::string MyClass::addElement(Type1 &item, const std::string &param2)
{
    if (param2.empty())
    {
        // logging
        return "";
    }

    return m_database->addElement(item, param2, item.status, true);

    // here I would expect an unreachable code warning
    m_database->updateTableA(item.p1, item.p2, item.p3, AType::AType23);
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么我们的编译器(GCC 4.8.5 和 7)不发出警告?

我们编译 -std=c++0x -Wall -Wextra -Wsign-compare -Wunknown-pragmas -Wold-style-cast -Wshadow -Wfatal-errors

c++ gcc dead-code compiler-warnings

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

多显示器设置 pyautogui 的屏幕截图

我在 python 中使用pyautogui来获取屏幕截图

import pyautogui
screen = pyautogui.screenshot()
screen.save("file.jpg")
Run Code Online (Sandbox Code Playgroud)

它在所有平台上的单个屏幕上运行良好。但在多屏幕系统中,它将两个屏幕组合在一个屏幕截图中。但我想要一张当前正在使用的显示器的屏幕截图。

python linux windows macos python-3.x

4
推荐指数
2
解决办法
2万
查看次数

匹配不均匀的转义符号数

我需要匹配C++预处理器语句.现在,预处理程序语句可能跨越多行:

#define foobar \
    "something glorious"
Run Code Online (Sandbox Code Playgroud)

最终的反斜杠可能会被转义,因此以下结果分为两行:

#define foobar \\
No longer in preprocessor.
Run Code Online (Sandbox Code Playgroud)

问题是如何有效地匹配显式的行继续.我有以下表达式,我认为有效.基本上,它测试反斜杠的数量是否是奇数.它是否正确?可以更有效地完成吗?

/
    [^\\]           # Something that's not an escape character, followed by …
    (?<escape>\\*?) # … any number of escapes, …
    (?P=escape)     # … twice (i.e. an even number).
    \\ \n           # Finally, a backslash and newline.
/x
Run Code Online (Sandbox Code Playgroud)

(我正在使用PHP,所以PCRE规则适用,但我会欣赏任何正则表达式的答案.)

regex backreference pcre

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

使用C#获取两个字母(AE)之间的字母(ABCDE)

我需要在使用C#传递两个字母时将字母作为数组

例如:当我通过时"AE",我需要将{A,B,C,D,E}作为数组.并且传递"FJ"应该返回{F,G,H,I,J}.

c#

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

编写像C#这样的代码是否合法?

例:

H

class MyClass {
    int x,y,z;
public:
    MyClass(int,int,int);
    void X();
    void Y();
    void Z();
};
Run Code Online (Sandbox Code Playgroud)

CPP

class MyClass {
    int x,y,z;
public:
    MyClass(int x,int y,int z) {
        this->x=x;
        this->y=y;
        this->z=z;
    }
    void X() {
        printf("x = %d;\n",x);
    }
    void Y() {
        printf("y = %d;\n",y);
    }
    void Z() {
        printf("z = %d;\n",z);
    }
};
Run Code Online (Sandbox Code Playgroud)

使它像C#一样.不要包含标题,在CPP中重新声明类,但使用方法体.当文件包含标题时,他从CPP获取extern字段\方法等.

这是合法的吗?我无法预测它的问题.有?

c++

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

懒惰的评价len(obj)== 1它有多聪明?

python会计算所有项目的长度或只是理解并停止,如果找到第二项?

if len(obj) == 1: ...
Run Code Online (Sandbox Code Playgroud)

python

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

空格vs空字符

在C++中,当我们需要打印单个空格时,我们可能会执行以下操作:

cout << ' ';
Run Code Online (Sandbox Code Playgroud)

或者我们甚至可以使用转换后的ASCII代码来表示空间:

cout << static_cast<char>(32); //ASCII code 32 maps to a single space
Run Code Online (Sandbox Code Playgroud)

我意识到,打印空字符也会导致打印一个空格.

cout << static_cast<char>(0); //ASCII code 0 maps to a null character
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:所有C++编译器都是通用的,当我打印时static_cast<char>(0),它总是在显示器中显示为单个空格吗?

如果它是通用的,当我使用文件输出流时它是否适用于文本文件?

c++ null space

3
推荐指数
2
解决办法
1580
查看次数

std :: pair vs Array

我正在创建一个带有键和值的Map.值必须有两个单独的条目.现在我想到的前两个选项
要么就是去

Map< int,array[2] > 
Run Code Online (Sandbox Code Playgroud)

要么

Map < int,pair < float,float > >  
Run Code Online (Sandbox Code Playgroud)

在内存和执行时间方面,这两者中哪一个更好.我个人认为数组会更好,因为我们不需要执行任何搜索功能.我只是计划使用下标访问该位置并更改它们.

c++ arrays std-pair

3
推荐指数
2
解决办法
2294
查看次数

用自定义条件包装 printf

如果某些条件为真,我只想打印 printf。我知道 printf 是一个可变参数函数,但遗憾的是我似乎无法在这里找到任何解释我可以包装它的线程。

基本上我写的代码中的每一个:

printf(" [text and format] ", ... args ...);
Run Code Online (Sandbox Code Playgroud)

我想写一些类似的东西

my_custom_printf(" [text and format] ", ... args ...);
Run Code Online (Sandbox Code Playgroud)

然后是这样实现的:

int my_custom_printf(const char* text_and_format, ... args ...)
{
    if(some_condition)
    {
        printf(text_and_format, ... args...);
    }
}
Run Code Online (Sandbox Code Playgroud)

条件的第一个版本将独立于 args(它将在某个全局变量上),但将来可能会成为需要的条件一个参数。

无论如何,现在我只需要... args ...原型中的语法和my_custom_printf.

我正在使用 GCC,但我不知道哪个 C 标准 - 但我们可以尝试一下。

c customization printf variadic-functions

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

如何将多条迹线添加到单个绘图中?

我想使用 purrr 包中的地图将 y 轴轨迹添加到绘图对象。但它不是向现有绘图添加新迹线,而是为每个迹线创建单独的绘图。看:

library(purrr)
library(plotly)

data("iris")

p = plot_ly(iris, type = "bar")
xaxis = ~Species
map(c(~Sepal.Length, ~Sepal.Width, ~Petal.Length, ~Petal.Width), ~add_trace(p, x = xaxis, y = .x))
Run Code Online (Sandbox Code Playgroud)

有办法解决这个问题吗?

r plotly purrr r-plotly

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