小编iBu*_*Bug的帖子

Git中的"瓷器"一词是什么意思?

Git文档中偶尔出现"瓷器"一词.这是什么意思?

git terminology

399
推荐指数
7
解决办法
7万
查看次数

在 Visual Studio Code 中运行的 Angular 应用程序中,TSLint 扩展抛出错误

我最近开始看到 TSLint 错误。它们看起来像这样:

不使用为“/Users/myname/myproject/client/src/app/likes/likee/likee.component.ts”找到的本地 TSLint 版本。要从当前工作区启用代码执行,您必须启用工作区库执行。

当我打开它们时,我在我的 .ts 文件中看到它们,它在每个 .ts 页面的第一行显示一条黄色波浪线。

我在TSLint网站上看到它说它已被弃用。

问题 1 - 这些错误的原因是什么,为什么我会突然看到它们?

问题 2 - 我应该卸载 Visual Studio Code TSLint 扩展并安装 ESLint 扩展吗?

eslint tslint visual-studio-code vscode-extensions angular

235
推荐指数
7
解决办法
7万
查看次数

访问对象内存地址

当您object.__repr__()在Python中调用该方法时,您会得到类似这样的内容:

<__main__.Test object at 0x2aba1c0cf890> 
Run Code Online (Sandbox Code Playgroud)

如果你超载__repr__(),有没有办法得到一个内存地址,除了调用super(Class, obj).__repr__()和重新出现之外?

python object repr memory-address

154
推荐指数
6
解决办法
17万
查看次数

即使我将输出重定向到/ dev/null,printf仍会有成本吗?

我们有一个包含大量打印消息的守护进程.由于我们正在开发具有弱CPU和其他约束硬件的嵌入式设备,因此我们希望在最终版本中最小化printf消息的任何类型的成本(IO,CPU等).(用户没有控制台)

我的队友和我有分歧.他认为我们可以将所有内容重定向到/ dev/null.它不会花费任何IO,所以感情将是最小的.但我认为它仍将花费CPU,我们最好为printf定义一个宏,这样我们就可以重写"printf"(也许只是返回).

所以我需要一些关于谁是对的意见.Linux是否足够聪明以优化printf?我真的很怀疑.

c linux embedded performance dev-null

60
推荐指数
4
解决办法
4934
查看次数

最终虚拟功能的重点是什么?

维基百科在C++ 11 final修饰符上有以下示例:

struct Base2 {
    virtual void f() final;
};

struct Derived2 : Base2 {
    void f(); // ill-formed because the virtual function Base2::f has been marked final
};
Run Code Online (Sandbox Code Playgroud)

我不明白引入虚拟功能并立即将其标记为最终功能.这只是一个不好的例子,还是有更多的东西?

c++ inheritance virtual-functions final c++11

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

三向比较运算符与减法有何不同?

<=>在C++ 20中有一个新的比较运算符.但是我认为在大多数情况下,简单的减法效果很好:

int my_strcmp(const char *a, const char *b) {
    while (*a == *b && *a != 0 && *b != 0) {
        a++, b++;
    }
    // Version 1
    return *a - *b;
    // Version 2
    return *a <=> *b;
    // Version 3
    return ((*a > *b) - (*a < *b));
}
Run Code Online (Sandbox Code Playgroud)

它们具有相同的效果.我无法理解其中的差异.

c++ comparison-operators spaceship-operator c++20

51
推荐指数
3
解决办法
7480
查看次数

使用指向one-past-malloc的指针是否定义明确?

在C,这是非常清楚,使指向一个指向一个过去的数组的最后一个元素,并在指针算术使用它,只要你不取消对它的引用:

int a[5], *p = a+5, diff = p-a; // Well-defined
Run Code Online (Sandbox Code Playgroud)

但是,这些是UB:

p = a+6;
int b = *(a+5), diff = p-a; // Dereferencing and pointer arithmetic
Run Code Online (Sandbox Code Playgroud)

现在我有一个问题:这是否适用于动态分配的内存?假设我只是在指针算术中使用指向一个过去的指针,而不取消引用它,并且malloc()成功.

int *a = malloc(5 * sizeof(*a));
assert(a != NULL, "Memory allocation failed");
// Question:
int *p = a+5;
int diff = p-a; // Use in pointer arithmetic?
Run Code Online (Sandbox Code Playgroud)

c malloc bounds language-lawyer dynamic-allocation

47
推荐指数
4
解决办法
3376
查看次数

在逗号分隔列表中使用`void()`?

当我看到这个时,我正在查看其他人编写的一段代码:

a(), void(), b();
Run Code Online (Sandbox Code Playgroud)

其中两个ab是一个用户定义的模板类,其意在像通过重载的函数的实例operator(),它返回调用实例本身.

课程的一部分:

template <typename T>
class SomeClass{
    public:
    SomeClass& operator()(void);
    const SomeClass& operator()(void) const;
}
Run Code Online (Sandbox Code Playgroud)

两个重载的返回语句如下:

template <typename T>
SomeClass<T>& SomeClass<T>::operator()(void){
    // do stuff
    return *this;
}

template <typename T>
const SomeClass<T>& SomeClass<T>::operator()(void) const{
    // do stuff
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

什么是void()他们之间呢?我觉得很奇怪

c++

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

在Unix上启用优化时,strcpy()/ strncpy()在结构成员上崩溃并有额外的空间?

在编写项目时,我遇到了一个奇怪的问题.

这是我设法编写的用于重新创建问题的最小代码.我故意将一个实际的字符串存储在其他地方,并分配了足够的空间.

// #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <stddef.h> // For offsetof()

typedef struct _pack{
    // The type of `c` doesn't matter as long as it's inside of a struct.
    int64_t c;
} pack;

int main(){
    pack *p;
    char str[9] = "aaaaaaaa"; // Input
    size_t len = offsetof(pack, c) + (strlen(str) + 1);
    p = malloc(len);
    // Version 1: crash
        strcpy((char*)&(p->c), str);
    // Version 2: crash
        strncpy((char*)&(p->c), str, strlen(str)+1);
    // Version 3: works!
        memcpy((char*)&(p->c), str, strlen(str)+1); …
Run Code Online (Sandbox Code Playgroud)

c struct segmentation-fault compiler-optimization strcpy

32
推荐指数
3
解决办法
2195
查看次数

C标准是否要求n个元素数组的大小是元素大小的n倍?

C标准是否要求n个元素数组的大小是元素大小的n倍,可以通过显式语句还是通过严格的逻辑推理来满足其要求?

例如,可能int (*x)[5] = malloc(5 * sizeof **x);无法为五个数组请求足够的空间int

C 2011 [N1570] 6.5.3.4 7显示了计算数组中元素数量的示例sizeof array / sizeof array[0].但是,例子不是标准的规范部分(根据前言第8段).

6.2.5 20表示数组类型描述了具有特定类型的连续分配的非空对象集,但对所需的总内存没有提及.

这只是一个语言律师问题; 实际的实现是无关紧要的.(为了安抚那些想要具体示例的人,假设一个C实现需要对大型数组进行额外的内存管理,因此创建一个数组需要创建一些额外的数据来帮助管理内存.)

c arrays size language-lawyer

27
推荐指数
2
解决办法
1753
查看次数