问候,
我找到了一个使用Flag的C++遗留代码,后来根据完成的读取更新了标志的状态:
主文件:
#define VINCULACION 0x00000004L
#define DET_VINCULACION 0x00000008L
long unsigned FlagRead ;
int formerMethod(){
if ((FlagRead & VINCULACION)==0) ReadVinculacion();
//... DO MORE
}
int ReadVinculacion(){
//.. Do DB operations to read Vinculacion variables.
FlagRead|=VINCULACION;
return 1;
}
//.. Same similar methods to ensure reading DET_VINCULACION but not doing it twice.
Run Code Online (Sandbox Code Playgroud)
现在用Java开发我没有使用带有整数或长整数的常量作为使用枚举的好习惯.
是否有一种性能明智和可靠的方法来使用java下的枚举执行相同的任务?
谢谢!
背景:按位枚举对于"更易读"的比较和检查非常有用:即OpenFile(write | append).
我已经看到了几种在C#中声明按位枚举的方法,但是最近其中一种常见模式似乎不再返回唯一值,我想知道我是在宣告它是错还是有些东西已经改变了.我在谈论"DWORD"(十六进制?)样式(如下所示),在VS2012 RC中枚举时,值为1,2,3,4 ...而不是预期的逐位加倍.
其他人可以重现这个吗?我发布了用于验证的代码以及控制台输出; ComparisonsDword正如您可以通过"标记枚举,带有DWORD的显式值"的输出所看到的那样发生奇怪的行为.
没有标志,正常的枚举
/// <summary>
/// How to compare filter values; no underlying type declared, not flag
/// </summary>
public enum ComparisonsNotInt {
[Description("x")]
None
,
[Description("!=")]
NotEqual
,
[Description("=")]
Equal
,
[Description(">")]
GreaterThan
,
[Description("<")]
LessThan
,
/// <summary>
/// Combination of <see cref="Equal"/> and <see cref="LessThan"/>
/// </summary>
[Description("<=")]
LessThanOrEqual = (Equal | LessThan)
,
/// <summary>
/// Combination of <see cref="Equal"/> and <see cref="GreaterThan"/>
/// </summary>
[Description(">=")]
GreaterThanOrEqual …Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我试图检查"shape_list"中是否已存在变量"new_shape".如果它不存在,我想添加它; 如果确实存在,我只想留下它.到目前为止,我只使用标志实现了这一点.我确信有一种方法可以在没有旗帜的情况下更有效地完成同样的事情.有什么建议?感谢您的帮助!
flag = 0
for shape in shape_list:
if new_shape == shape:
flag = 1
break
if flag == 0:
shape_list.append(new_shape)
Run Code Online (Sandbox Code Playgroud) 我有一个PS脚本,其中包含一些功能.我需要的是我应该能够将特定函数作为别名或变量标志传递给PS脚本.
对于Eg:假设我有一个具有以下2个函数的TestFunc.ps1文件
$XmlFilePath = "C:\XmlPath\file1.xml
Function ParseXml($XmlFilePath)
{
#Do Something
}
Function CreateReport($XmlFilePath)
{
#Do Something
}
Run Code Online (Sandbox Code Playgroud)
现在我如何为这两个函数(ParseXml和CreateReport)创建一个别名,以便我可以将它们作为标志(使用它们的别名)传递给脚本?对于Eg:我应该能够做到这样的事情:
. .\TestFunc.ps1 -Xml #This must be able to execute the ParseXml($XmlFilePath) function for me
. .\TestFunc.ps1 -Report #This must execute CreateReport($XmlFilePath) function
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.我一直在努力这一段时间.
谢谢!阿树
我用过双垂直"||" 作为布尔"或"运算符.并看到"|" 是按位还是.
但是,由于我已经开始使用c ++/cli,我注意到它曾经用一个似乎接受多个标志的单个参数来分隔函数中的标志.
这方面的一个例子是msdn的MessageBox()函数示例.
int msgboxID = MessageBox(
NULL,
(LPCWSTR)L"Resource not available\nDo you want to try again?",
(LPCWSTR)L"Account Details",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
Run Code Online (Sandbox Code Playgroud)
"|"执行的操作到底是什么 这里?
什么是"|" 实际上叫做符号?(就像"^"被称为插入符号,而不是我在编程之前所知道的,这是"倒置V"):D
我问的原因是我正在使用函数setWindowPos(),它也接受标志作为参数.函数声明如下:
BOOL WINAPI SetWindowPos(
_In_ HWND hWnd,
_In_opt_ HWND hWndInsertAfter,
_In_ int X,
_In_ int Y,
_In_ int cx,
_In_ int cy,
_In_ UINT uFlags
);
Run Code Online (Sandbox Code Playgroud)
我想知道标志是否可以像MessageBox()中那样组合.
提前致谢,
家伙
我有枚举:
[Flags]
enum Editions
{
Educational,
Basic,
Pro,
Ultra
}
Run Code Online (Sandbox Code Playgroud)
为什么我会这样做?
var x = Editions.Basic;
var y = Editions.Educational;
var test =x.HasFlag(y); // why is this true!?
// and!!!
var test2 = y.HasFlag(x); // this is false!
Run Code Online (Sandbox Code Playgroud) 我希望我制作的游戏能够在沉浸式模式下运行,但是android studio无法识别标志沉浸式模式,因为我将最低API设置为16,并且我知道沉浸式模式仅在以后的KitKat中添加。有什么方法可以让我的应用程序在不改变最低API的情况下以沉浸式模式运行?
我为我的项目准备header file了很多东西constants。
我想运行我的代码的特定部分depending on the target I've chosen。我知道如何做到这一点的infoDictionary一种方法是使用NSBundle的方法。但是,我只想在这里使用.h文件作为我的所有常量。
当前,我正在使用DEBUG标志并通过检查该标志来运行我的代码,如下所示:
#if DEBUG
...
#else
...
#endif
Run Code Online (Sandbox Code Playgroud)
我希望能够在目标中添加自己的标志并检查头文件中的标志,而不是依赖DEBUG标志。
我在Microsoft驱动程序代码示例中看到调试跟踪标志:
#define DEBUG_TRACE_ERROR 0x00000001 // Errors - whenever we return a failure code
#define DEBUG_TRACE_LOAD_UNLOAD 0x00000002 // Loading/unloading of the filter
#define DEBUG_TRACE_INSTANCES 0x00000004 // Attach / detatch of instances
#define DEBUG_TRACE_METADATA_OPERATIONS 0x00000008 // Operation to access / modify in memory metadata
#define DEBUG_TRACE_ALL_IO 0x00000010 // All IO operations tracked by this filter
#define DEBUG_TRACE_INFO 0x00000020 // Misc. information
#define DEBUG_TRACE_ALL 0xFFFFFFFF // All flags
Run Code Online (Sandbox Code Playgroud)
据我所知,标志应该是2的功率(如1,2,4,8,16,32)不相交.但是为什么DEBUG_TRACE_ALL_IO是10而DEBUG_TRACE_INFO 是20而不是16&32?
我tf.app.flags在我的tensorflow程序中使用了这样的:
flags = tf.app.flags
FLAGS = flags.FLAGS
flags.DEFINE_string('model_dir', './models','Save checkpoint')
.
.
.
if __name__ == "__main__":
# main()
tf.app.run()
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的代码两次时会出现这个错误:
ArgumentError: argument --model_dir: conflicting option string: --model_dir
Run Code Online (Sandbox Code Playgroud)
我认为tensorflow为--model_dir创建了一个参数,当它再次运行时,它尝试再次创建--model_dir的参数,但是存在--model_dir冲突.
有没有办法解决这个问题或者我使用python参数tf.app.falgs?