我们刚刚在我们的代码库中发现了一个问题,即语句在 return 语句之后。
例如
std::string MyClass::addElement(Type1 &item, const std::string ¶m2)
{
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
我在 python 中使用pyautogui来获取屏幕截图
import pyautogui
screen = pyautogui.screenshot()
screen.save("file.jpg")
Run Code Online (Sandbox Code Playgroud)
它在所有平台上的单个屏幕上运行良好。但在多屏幕系统中,它将两个屏幕组合在一个屏幕截图中。但我想要一张当前正在使用的显示器的屏幕截图。
我需要匹配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规则适用,但我会欣赏任何正则表达式的答案.)
我需要在使用C#传递两个字母时将字母作为数组
例如:当我通过时"AE",我需要将{A,B,C,D,E}作为数组.并且传递"FJ"应该返回{F,G,H,I,J}.
例:
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++中,当我们需要打印单个空格时,我们可能会执行以下操作:
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),它总是在显示器中显示为单个空格吗?
如果它是通用的,当我使用文件输出流时它是否适用于文本文件?
我正在创建一个带有键和值的Map.值必须有两个单独的条目.现在我想到的前两个选项
要么就是去
Map< int,array[2] >
Run Code Online (Sandbox Code Playgroud)
要么
Map < int,pair < float,float > >
Run Code Online (Sandbox Code Playgroud)
在内存和执行时间方面,这两者中哪一个更好.我个人认为数组会更好,因为我们不需要执行任何搜索功能.我只是计划使用下标访问该位置并更改它们.
如果某些条件为真,我只想打印 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 标准 - 但我们可以尝试一下。
我想使用 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)
有办法解决这个问题吗?