我希望能够在一行命令中注释掉一个标志.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) 一般来说,当我们从多个进程附加到UNIX中的文件时,我们可以理所当然地认为什么?是否有可能丢失数据(一个进程会覆盖其他进程)?数据是否可能被破坏?(例如,每个进程在每个追加到日志文件时附加一行,是否有可能两行被破坏?)如果追加在上述意义上不是原子的,那么确保互斥的最佳方法是什么?
更新:此示例中的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* const
? const Base*
我理解,但是Base* const
?const
在这种情况下指的是什么?
我想保存发布每个命令的当前目录以及历史记录中的命令.为了不搞乱,我考虑在行尾添加当前目录作为注释.一个例子可能有帮助:
$ 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)
这个想法是这样我可以立即看到我发出命令的位置.
可能重复:
chrome console.log的别名
这真的很傻,但我不能缩写console.log(我正在使用Chrome).这是我天真的尝试:
var log = console.log;
log("Bingo"); // Uncaught TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)
我应该使用apply()吗?但那时我必须传递论据,对吗?
OK,我不完全是一个新手,但我不能说我理解下面的宏.最令人困惑的部分是将值转换为size_t:这实际上是什么?特别是,因为我看到一个否定运算符,据我所知,它可能导致零值.这是不是意味着它会导致被零除错误?(顺便说一句,宏是正确的,并且工作得很漂亮.)
#define ARRAYSIZE(a) \
((sizeof(a) / sizeof(*(a))) / \
static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))
Run Code Online (Sandbox Code Playgroud) 我正在看git历史,看到提交之间的各种边缘颜色:红色,灰色,蓝色,绿色,棕色等.这些颜色是什么意思?它们对我来说似乎很随意......
我的课程中有以下方法定义:
virtual Calc* Compile(
Evaluator* evaluator, ResolvedFunCall* fun_call, string* error);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,海湾合作委员会抱怨说:
error: 'Compile' declared as a 'virtual' field
任何想法为什么它会相信Compile是一个领域,而不是一个方法?
这编译:
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容器的逐点分配.