标签: flags

为什么C++支持十六进制赋值,但是缺少二进制赋值?如何最好地存储标志?

我有一组位标志,用于我从C到C++移植的程序.

开始...

我程序中的标志以前定义为:

/* Define feature flags for this DCD file */
#define DCD_IS_CHARMM       0x01
#define DCD_HAS_4DIMS       0x02
#define DCD_HAS_EXTRA_BLOCK 0x04
Run Code Online (Sandbox Code Playgroud)

...现在我已经收集了常量的#defines(与类常量等相比)通常被认为是不好的形式.

这引发了关于如何最好地在c ++中存储位标志以及为什么c ++不支持将二进制文本分配给int的问题,就像它允许以这种方式分配十六进制数字(通过"0x").这篇问题总结在本文末尾.

我可以看到一个简单的解决方案是简单地创建单个常量:

namespace DCD {
   const unsigned int IS_CHARMM = 1;
   const unsigned int HAS_4DIMS = 2;
   const unsigned int HAS_EXTRA_BLOCK = 4;
};
Run Code Online (Sandbox Code Playgroud)

我们称这个想法为1.

我的另一个想法是使用整数枚举:

namespace DCD {
   enum e_Feature_Flags {
      IS_CHARMM = 1,
      HAS_4DIMS = 2,
      HAS_EXTRA_BLOCK = 8
   };
};
Run Code Online (Sandbox Code Playgroud)

但令我困扰的一件事是,当涉及更高的价值时,它似乎不那么直观......似乎......

namespace DCD {
   enum e_Feature_Flags {
      IS_CHARMM = 1,
      HAS_4DIMS = 2, …
Run Code Online (Sandbox Code Playgroud)

c++ binary flags inline variable-assignment

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

选择EFLAGS位的概率

我们都知道,在查看源代码时,可以安全地假设方向标志清晰.方向标志的概率非常低.

我想了解其他旗帜的可能性.这就是为什么我编写了一个测试程序,它单步执行我现有的一些软件,为前12个EFLAGS位中的每一个增加一个计数器.

x86处理器标志的概率

结果证实了关于方向标志(DF)的假设,并且毫不奇怪地表明溢出标志(OF)的概率非常低.

但其他旗帜怎么样?进位标志(CF),辅助标志(AF),零标志(ZF)和符号标志(SF)似乎稳定在25%,但奇偶校验标志(PF)跳出超过50%.

我想知道为什么CF,AF,ZF和SF的概率如此之低.

对于PF,我自己的两分钱解释告诉我,鉴于所有可能的8位位模式中的奇偶校验偶数和奇偶校验的50-50分布并且意识到一些最常用的数字(0和-1)具有甚至平价,超过50%的机会是合理的.

x86 assembly flags parity

6
推荐指数
1
解决办法
127
查看次数

在 Xcode 3.1.4 中添加 -Wall 和 -Wextra 的位置

我想弄清楚在 Xcode 中在哪里添加额外的警告标志,如 -Wall 和 -Wextra,我在 Leopard 上使用 3.1.4 版。Apple 的文档适用于旧版本,如果我按照他们的说明进行操作,它会将我带到一个与他们显示的完全不同的窗口。此外,他们还有一个特定警告标志清单的屏幕截图,我不知道如何做到这一点,或者即使它仍然存在。

澄清:我正在构建一个 iPhone 应用程序...... bbum 为我指出了 OS X 应用程序的正确位置,但 iPhone 项目的选项不同,我没有看到明显的类似物。

xcode flags warnings compiler-warnings

5
推荐指数
1
解决办法
1965
查看次数

标志 Enum 和互斥 Enum 具有重叠含义

我有一个模型必须处于以下互斥状态之一:NewIn ProgressClosed

该应用程序允许用户保存记录,然后通过提供匹配状态列表来检索它们。

我继承了一个 SQL 数据库,其中状态存储为表示按位标志的整数。我必须调用一个通过按位运算进行匹配的过程:

CREATE PROCEDURE SearchByState
    @MatchingStates       int
AS
BEGIN
    SELECT Id, State
    FROM Records
    WHERE @MatchingStates & State > 0
END;
GO
Run Code Online (Sandbox Code Playgroud)

这对我来说一切都很好。

现在,在 C# 实现中,很明显我应该定义标志来表示查询中匹配状态的组合:

[Flags]
public enum States
{
    None = 0x0,
    New= 0x1,
    InProgress = 0x2,
    Closed = 0x4,
    All = New | InProgress | Closed
}
Run Code Online (Sandbox Code Playgroud)

问题是记录的模型必须具有表示单个状态的属性。

问题是,这个记录的模型的State属性的类型应该是什么:

1)只需使用枚举标志:

public class Record
{
    public int Id { get; set; }

    // Must ensure the value is …
Run Code Online (Sandbox Code Playgroud)

.net c# enums flags

5
推荐指数
1
解决办法
2391
查看次数

cmake:定义链接标志的顺序

我是 cmake 的新手。我需要链接一些额外的库,所以我使用

   CMAKE_EXE_LINKER_FLAGS:STRING=-lmymalloc -Wl,--wrap,malloc
Run Code Online (Sandbox Code Playgroud)

问题是 -lmymalloc 在生成的 Makefile 中被列为链接器标志的第一个参数,然后还有其他几个参数(这似乎是由 cmake 以另一种方式定义的)。我需要将它移到列出的标志的末尾,否则它将无法链接。我怎样才能做到这一点?

linker flags cmake

5
推荐指数
0
解决办法
955
查看次数

编码中的标志和深度 (Pygame)

所以我开始学习 pygame 并在这一行中:

pygame.display.set_mode((640,300), 0, 32)
Run Code Online (Sandbox Code Playgroud)

我想知道 0 和 32 是什么意思,如果我改变这两个变量,程序将如何改变。

python variables flags pygame depth

5
推荐指数
1
解决办法
6303
查看次数

在 C++ 中重置输出标志

我打算将结束使用该resetiosflags函数的行上的所有输出标志重置为默认值。当我尝试以这种方式执行此操作时,它会提供错误的输出,这与我的预期相反。

#include <iostream>
#include <iomanip>
using namespace std;
int
main()
{
    bool first;
    int second;
    long third;
    float fourth;
    float fifth;
    double sixth;

    cout << "Enter bool, int, long, float, float, and double values: ";
    cin >> first >> second >> third >> fourth >> fifth >> sixth;
    cout << endl;

// ***** Solution starts here ****
    cout << first << " " << boolalpha << first  << endl << resetiosflags;
    cout << second << " " << …
Run Code Online (Sandbox Code Playgroud)

c++ flags iostream iomanip

5
推荐指数
1
解决办法
2216
查看次数

如何在Google Chrome上启用WebVR?

我正在尝试创建一个WebVR场景.对于此任务,我想在Google Chrome上启用WebVR.我的操作系统是Windows 8.

我打开旗帜chrome://flags/.WebVR不存在.我该如何启用它?

flags google-chrome webvr

5
推荐指数
1
解决办法
1万
查看次数

如何在 Jupyter Notebook 或 Python Shell 中设置标志

我需要运行名为的脚本train.py,但还需要通过在 bash 中发出以下命令来设置 flas:

\n\n
train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,它捕获了这个错误:

\n\n
\n

文件\n“/Users/cvsanbuenaventura/miniconda3/lib/python3.6/site-packages/google/protobuf/text_format.py”,\n第1288行,在_ConsumeSingleByteString\n引发self.ParseError(\'字符串缺少结束引号: %r\' % (text,)) google.protobuf.text_format.ParseError: 123:17 : 字符串缺少结尾\n 引用:\n \'"/Users/cvsanbuenaventura/Documents/tensorflow/models/research/object_detection/ train.record\xe2\x80\x9c\'

\n
\n\n

所以我想在Python Shell或Jupyter Notebook中逐行调试。不过我还需要设置train_dir标志。我该如何实现这个目标?

\n

python flags jupyter-notebook

5
推荐指数
2
解决办法
4831
查看次数

如何只设置ARM汇编的溢出标志?

在我的 Raspberry PI 上学习 ARM 汇编时,我一直在摆弄 Flags。我设计了仅设置零标志、仅设置负数和仅设置进位标志的方法。但是我想不出一种方法来仅设置溢出标志。是否可以?任何帮助,将不胜感激!

挑战是不要写信给cpsr(因为出于各种原因我不允许这样做,否则这将是最好的解决方案,因为它是最好的解决方案)

编辑:仅设置溢出标志,其他所有标志为零/清除。仅使用算术或移位。NZCV = 0001

Edit2:为了进一步澄清,我认为需要多个指令才能实现这一点。

assembly flags arm raspberry-pi

5
推荐指数
1
解决办法
2587
查看次数