标签: flags

Android - 使用FLAG_ACTIVITY_NEW_TASK

我创建了一个带按钮的简单应用程序.单击它会触发通知,单击通知会启动同一应用程序的新实例.但是,我希望点击通知应该会将我带回到触发通知的应用程序实例.为此,我咨询了Android文档的FLAG_ACTIVITY_NEW_TASK标志 -

使用此标志时,如果任务已在您正在启动的活动上运行,则不会启动新活动; 相反,当前任务将简单地以其最后一个状态被带到屏幕的前面.请参阅FLAG_ACTIVITY_MULTIPLE_TASK以获取禁用此行为的标志.

基于此,在创建传递给PendingIntent的意图时,我设置了这个标志.但是,单击通知仍会启动应用程序的新实例.

我究竟做错了什么 ?

flags android android-intent

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

找到标志枚举长度的有效方法?

考虑一下:

[Flags]
enum Colors
{
    Red=1,
    Green=2,
    Blue=4
}

Colors myColor=Colors.Red|Colors.Blue;
Run Code Online (Sandbox Code Playgroud)

目前,我的做法如下:

int length=myColors.ToString().Split(new char[]{','}).Length;
Run Code Online (Sandbox Code Playgroud)

但我希望有一种更有效的方法来查找长度,可能基于bitset操作.

如果可能,请说明解决方案的原因和方式.

此外,如果这是重复,请指出它,我将删除此问题.关于SO我能找到的唯一类似的问题关注的是找到所有可能的Colors枚举组合的长度,而不是myColors变量的长度.

更新:我仔细地对每个解决方案进行了基准测试(每个解决方案1 ​​000 000次),结果如下:

  1. Stevo3000 - 8ms
  2. MattEvans - 10ms
  3. Silky - 34ms
  4. 卢克 - 1757ms
  5. Guffa - 4226ms
  6. Tomas Levesque - 32810ms

Stevo3000是一个明显的赢家(Matt Evans持有银牌).

非常感谢您的帮助.

更新2:此解决方案运行速度更快:100 000次迭代时为41 ms(比Stevo3000快约40倍(32位操作系统))

UInt32 v = (UInt32)co;
v = v - ((v >> 1) & 0x55555555); 
v = (v & 0x33333333) + ((v >> 2) & 0x33333333); 
UInt32 count = ((v + (v …
Run Code Online (Sandbox Code Playgroud)

c# enums flags

7
推荐指数
1
解决办法
4698
查看次数

使用GDB进行调试时可能导致问题的GCC选项

我想知道我是否可以得到一个gcc选项列表,可能导致gdb表现得很奇怪.

当然,我们都知道使用优化选项(例如-O3)会导致gdb中出现奇怪的行为,但是其他可以产生这种影响的选项是什么?

(我目前正在尝试在gdb中运行mpeg2解码器,即使在删除优化标志后我也会出现奇怪的行为......)

flags gcc gdb

7
推荐指数
1
解决办法
2164
查看次数

标志枚举属性

没有它你可以测试的[Flags]属性有什么意义?

c# enums flags

7
推荐指数
2
解决办法
414
查看次数

检查枚举是否有任何共同的标志

考虑我有这个扩展方法:

public static bool HasAnyFlagInCommon(this System.Enum type, Enum value)
{
    var flags = value.ToString().Split(new string[] { ", " }, 
                                    StringSplitOptions.None);
    foreach (var flag in flags)
    {
        if (type.ToString() == flag)
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

以下情况:

[Flags]
enum Bla
{
    A = 0,
    B = 1,
    C = 2,
    D = 4
}

Bla foo = Bla.A | Bla.B;
Bla bar = Bla.A;

bar.HasAnyFlagInCommon(foo); //returns true
Run Code Online (Sandbox Code Playgroud)

我想检查foo是否有任何与bar相同的标志,但是在扩展方法中必须有更好的方法来实现这种行为.

我也尝试过这样,但总是返回true:

    public static bool HasAnyFlagInCommon(this System.Enum type, Enum value)
    {
        var flags …
Run Code Online (Sandbox Code Playgroud)

c# enums flags enum-flags

7
推荐指数
2
解决办法
2308
查看次数

C#枚举 - 检查面具上的标志

我有以下枚举标志:

[Flags]
private enum MemoryProtection: uint
{
    None             = 0x000,
    NoAccess         = 0x001,
    ReadOnly         = 0x002,
    ReadWrite        = 0x004,
    WriteCopy        = 0x008,
    Execute          = 0x010,
    ExecuteRead      = 0x020,
    ExecuteReadWrite = 0x040,
    ExecuteWriteCopy = 0x080,
    Guard            = 0x100,
    NoCache          = 0x200,
    WriteCombine     = 0x400,
    Readable         = (ReadOnly | ReadWrite | ExecuteRead | ExecuteReadWrite),
    Writable         = (ReadWrite | WriteCopy | ExecuteReadWrite | ExecuteWriteCopy)
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个枚举实例,我需要检查它是否可读.如果我使用以下代码:

myMemoryProtection.HasFlag(MemoryProtection.Readable)
Run Code Online (Sandbox Code Playgroud)

它总是在我的情况下返回false,因为我认为HasFlag检查它是否有每个标志.我需要优雅的东西来避免这样做:

myMemoryProtection.HasFlag(MemoryProtection.ReadOnly)         ||
myMemoryProtection.HasFlag(MemoryProtection.ReadWrite)        ||
myMemoryProtection.HasFlag(MemoryProtection.ExecuteRead)      ||
myMemoryProtection.HasFlag(MemoryProtection.ExecuteReadWrite)
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

.net c# enums flags enum-flags

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

删除cmake上的默认标志

下列 CMakeLists.txt

 SET(CMAKE_CXX_FLAGS "/DWIN32")
 SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS})
 add_executable(hello hello.cpp)
Run Code Online (Sandbox Code Playgroud)

结束了

 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe /c /nologo /W1 /WX- /O2 /Ob2 /D WIN32 /D NDEBUG /D "CMAKE_INTDIR=\"Release\"" /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"hello.dir\Release\\" /Fd"C:/Users/monso/code/playground/cmakeworld/build/Release /hello.pdb" /Gd /TP /errorReport:queue ..\hello.cpp
Run Code Online (Sandbox Code Playgroud)

带有标志/c /nologo /W1 /WX- /O2 /Ob2 /D WIN32 /D NDEBUG.

如何删除它们以放入我自己的?设置CMAKE_CXX_FLAGS附加我放的任何标志(/w例如).虽然CMAKE_CXX_FLAGSset通话之前和之后打印确实会改变其值.

flags cmake visual-c++

7
推荐指数
1
解决办法
2639
查看次数

CMake,g ++:设置CXX Flags -02但-03还在吗?

我想要在发布模式中添加特定的编译器cxx标志.我在另一个线程中读到-O2是发布配置的好标志

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
Run Code Online (Sandbox Code Playgroud)

但如果我现在检查CXX标志

message(${CMAKE_CXX_FLAGS_RELEASE})
Run Code Online (Sandbox Code Playgroud)

他写信给我

-O3 -DNDEBUG -Wall -O2
Run Code Online (Sandbox Code Playgroud)
  1. 使用-02而不是-03是否有意义?
  2. 如何从Flags中删除-03?
  3. 什么是DNDEBUG用于?

最好的祝福

compiler-construction flags g++ cmake

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

gfortran 中的条件编译

我想知道是否可以选择 Fortran 95 例程的不同部分进行编译。

例如,如果我将某个标志传递给 gfortran,那么编译器会选择将哪个部分用于某个函数。if我知道我可以在例程内部使用它,但缺点是if由于速度问题我不希望程序一直运行。我想解决方案应该类似于这个

我正在专门研究一个计算多体系统(例如,一百万)能量的程序。然后我不想if每次都需要在编译时使用不同的能量定义。

我希望这是可能的,并且我的问题很清楚。

flags fortran compilation gfortran conditional-statements

7
推荐指数
1
解决办法
6732
查看次数

Python While 循环突破问题

所以我对 Python 和一般编程很陌生。我的问题是关于我在这里的 while 循环标志。这有效,但不像我认为的那样。我想我不理解某些东西,所以如果有人能够解释,那就太好了。

根据我的理解,只要满足我的一个条件,就应该立即跳出循环。因此,如果我输入“q”,它应该会中断并停止循环。但发生的情况是它不断循环,然后爆发。所以它通过最后一个提示并打印异常。

(Python 版本为 3.8.5)

# Statement that tells the user what we need.
print("Enter two numbers and I will tell you the sum of the numbers.")
# Lets the user know they can press 'q' to exit the program.
print("Press 'q' at anytime to exit.")

keep_going = True

# Loop to make the program keep going until its told to stop.
while keep_going:
    # Prompt for user to input first number and store it in …
Run Code Online (Sandbox Code Playgroud)

python flags while-loop

7
推荐指数
2
解决办法
705
查看次数