什么是管道(|)字符?

C++ - What is the pipe ( | ) character?

本文关键字:字符 管道 什么      更新时间:2023-10-16

我有一些代码,如:

#include "Communicate.h"
Communicate::Communicate(const wxString& title)
       : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(290, 150))
{
  m_parent = new wxPanel(this, wxID_ANY);
  wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL);
  m_lp = new LeftPanel(m_parent);
  m_rp = new RightPanel(m_parent);
  hbox->Add(m_lp, 1, wxEXPAND | wxALL, 5);
  hbox->Add(m_rp, 1, wxEXPAND | wxALL, 5);
  m_parent->SetSizer(hbox);
  this->Centre();
}

从本教程:http://zetcode.com/gui/wxwidgets/- First Apps

operator |是什么意思:

hbox->Add(m_lp, 1, wxEXPAND | wxALL, 5);
hbox->Add(m_rp, 1, wxEXPAND | wxALL, 5);

|是位或。

库通常定义不同的掩码,比如你的wxEXPANDwxALL,它们通常是整数常量,只有一个位集。

当使用按位或操作符时,可以将这两个操作符组合起来创建所谓的位域,这是一个由您定义的位集组成的整数。

你像这样组合它们:

wxEXPAND | wxALL

将创建一个位域,其中包含wxEXPAND和wxALL中的位。

通常标准库会检查这些位是否像这样设置,例如:

if (bitfield & wxEXPAND) { .. // wxEXPAND is set

这是位与运算。当且仅当wxEXPAND位设置在bitfield中时,测试将返回true。

库使用它来允许您在单个寄存器中传递多个选项,例如