inline uint32_t code(uint32_t reg, Writer &writer)
{
uint32_t ZIEL, LHS, RHS;
if(op == OP_CONJ) {
LHS = lhs->code(reg, writer);
RHS = rhs->code(LHS + 1, writer);
reg = RHS + 1;
writer << OP_CONJ << reg << LHS << RHS;
...
有人可以帮我理解&#34;&lt;&lt;&#34;呢?
这是Writer
结构:
struct Writer {
std::ostream &os;
inline Writer(std::ostream &_os) : os(_os) { } inline Writer &operator<<(uint32_t val) {
os.write((const char*)&val, sizeof(uint32_t));
return *this;
}
答案 0 :(得分:3)
这是一个运营商!它可以翻译为“插入格式化输出”。
您可以在此处阅读更多内容:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
答案 1 :(得分:3)
在您发布的代码中,try
{
dir.Delete(true);
}
catch(Exception x) when (x is UnauthorizedAccessException || x is IOException)
{
Console.WriteLine("Error Removing the directory: {0}", dir.FullName);
}
的效果定义为
<<
其中os.write((const char*)&val, sizeof(uint32_t))
是对流的引用,在您尚未显示的代码中初始化。
即。它试图将值raw的字节写入流。
希望该流处于二进制模式,而不是文本模式,否则在某些系统(特别是Windows)上可以在途中更改数据。
这是os
的非常规使用。通常在C ++中<<
是
左移(C的原始含义)或
格式化输出(转换为文本)或
为集合添加值。
使用类似于显示的代码,使用名为<<
的东西,人们会期望格式化输出,而不是二进制输出。
答案 2 :(得分:1)
在c ++中,&lt;&lt;运算符用于输出流,而&gt;&gt;运算符用于输入流。
使用示例:
int number;
cin >> number;
cout << number;
上面的代码插入到使用std命名空间的程序中时会从键盘中获取number的值并将该值打印到屏幕上。
答案 3 :(得分:0)
它正在重载运算符defaultConfig {
//multiDexEnabled true
}
dependencies {
//compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
}
。基本上,它是一个名为<<
的函数。当您使用<<
调用此函数时,C ++会将参数设置为此符号旁边的值:
<<
就好像你这样调用了这个函数:
writer << 8;
实际上,您可以像这样调用运算符函数:
writer.<<(8); // Which won't run, but you get the idea