小编Laj*_*agy的帖子

对Bash的内联评论?

我希望能够在一行命令中注释掉一个标志.Bash似乎只有from # till end-of-line评论.我正在看这样的技巧:

ls -l $([ ] && -F is turned off) -a /etc
Run Code Online (Sandbox Code Playgroud)

它很难看,但总比没有好.有没有更好的办法?

以下似乎有效,但我不确定它是否可移植:

ls -l `# -F is turned off` -a /etc
Run Code Online (Sandbox Code Playgroud)

bash comments

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

这个bash fork炸弹是如何工作的?

根据维基百科,以下是非常优雅的bash fork炸弹:

:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

unix bash

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

文件是否在UNIX中附加原子?

一般来说,当我们从多个进程附加到UNIX中的文件时,我们可以理所当然地认为什么?是否有可能丢失数据(一个进程会覆盖其他进程)?数据是否可能被破坏?(例如,每个进程在每个追加到日志文件时附加一行,是否有可能两行被破坏?)如果追加在上述意义上不是原子的,那么确保互斥的最佳方法是什么?

unix file-io posix atomic atomicity

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

将shared_ptr <Base>向下转换为shared_ptr <Derived>?

更新:此示例中的shared_ptr与Boost中的一样,但它不支持shared_polymorphic_downcast(或者dynamic_pointer_cast或static_pointer_cast)!

我正在尝试初始化一个派生类的共享指针,而不会丢失引用计数:

struct Base { };
struct Derived : public Base { };
shared_ptr<Base> base(new Base());
shared_ptr<Derived> derived;

// error: invalid conversion from 'Base* const' to 'Derived*'
derived = base;  
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.我没想到C++会隐式地将Base*转换为Derived*.但是,我确实需要代码表示的功能(即,在向下转换基指针时保持引用计数).我的第一个想法是在Base中提供一个强制转换运算符,以便可以进行对Derived的隐式转换(对于pedants:我会检查向下转换是否有效,不要担心):

struct Base {
  operator Derived* ();
}
// ...
Base::operator Derived* () {
  return down_cast<Derived*>(this);
}
Run Code Online (Sandbox Code Playgroud)

好吧,它没有帮助.似乎编译器完全忽略了我的类型转换操作符.任何想法如何使shared_ptr分配工作?加分:什么类型Base* constconst Base*我理解,但是Base* constconst在这种情况下指的是什么?

c++ gcc boost

90
推荐指数
3
解决办法
6万
查看次数

将当前目录保存为bash历史记录

我想保存发布每个命令的当前目录以及历史记录中的命令.为了不搞乱,我考虑在行尾添加当前目录作为注释.一个例子可能有帮助:

$ cd /usr/local/wherever
$ grep timmy accounts.txt
Run Code Online (Sandbox Code Playgroud)

我希望bash将最后一个命令保存为:

grep timmy accounts.txt # /usr/local/wherever
Run Code Online (Sandbox Code Playgroud)

这个想法是这样我可以立即看到我发出命令的位置.

bash

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

在JavaScript中缩写console.log

可能重复:
chrome console.log的别名

这真的很傻,但我不能缩写console.log(我正在使用Chrome).这是我天真的尝试:

var log = console.log;
log("Bingo");  // Uncaught TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)

我应该使用apply()吗?但那时我必须传递论据,对吗?

javascript

23
推荐指数
2
解决办法
5912
查看次数

ARRAYSIZE C++宏:它是如何工作的?

OK,我不完全是一个新手,但我不能说我理解下面的宏.最令人困惑的部分是将值转换为size_t:这实际上是什么?特别是,因为我看到一个否定运算符,据我所知,它可能导致零值.这是不是意味着它会导致被零除错误?(顺便说一句,宏正确的,并且工作得很漂亮.)

#define ARRAYSIZE(a) \
  ((sizeof(a) / sizeof(*(a))) / \
  static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))
Run Code Online (Sandbox Code Playgroud)

c++ c-preprocessor

15
推荐指数
3
解决办法
3万
查看次数

边缘颜色在gitk中意味着什么?

我正在看git历史,看到提交之间的各种边缘颜色:红色,灰色,蓝色,绿色,棕色等.这些颜色是什么意思?它们对我来说似乎很随意......

git version-control

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

为什么C++编译器(gcc)认为函数是"虚拟"字段?

我的课程中有以下方法定义:

virtual Calc* Compile(
  Evaluator* evaluator, ResolvedFunCall* fun_call, string* error);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,海湾合作委员会抱怨说:

error: 'Compile' declared as a 'virtual' field

任何想法为什么它会相信Compile是一个领域,而不是一个方法?

c++ gcc compiler-errors

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

STL容器赋值和const指针

这编译:

int* p1;
const int* p2;
p2 = p1;
Run Code Online (Sandbox Code Playgroud)

这不是:

vector<int*> v1;
vector<const int*> v2;
v2 = v1;  // Error!
v2 = static_cast<vector<const int*> >(v1);  // Error!
Run Code Online (Sandbox Code Playgroud)

嵌套const指针的类型等价规则是什么?我认为转换是隐含的.此外,除非我真的需要,否则我宁愿不实现STL容器的逐点分配.

c++ gcc stl const

10
推荐指数
3
解决办法
3771
查看次数