标签: flags

如何将C bitflag枚举转换为C++?

C++主要是C的超集,但并非总是如此.特别是,虽然C和C++中的枚举值都隐式转换为int,但反之则不然:只有在C中,int会转换回枚举值.因此,通过枚举声明定义的bitflags无法正常工作.因此,这在C中是可以的,但在C++中则不行:

typedef enum Foo
{
    Foo_First = 1<<0,
    Foo_Second = 1<<1,
} Foo;

int main(void)
{
    Foo x = Foo_First | Foo_Second; // error in C++
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何有效和正确地处理这个问题,理想情况下不会损害使用Foo作为变量类型的调试器友好性质(它会分解为手表中的组件位标志等)?

还要考虑可能有数百个这样的标志枚举,以及数千个使用点.理想情况下,某种有效的运算符重载可以解决问题,但它确实应该是高效的; 我想到的应用程序是受计算限制的,并且具有快速的声誉.

澄清:我正在将一个大型(> 300K)C程序翻译成C++,所以我在运行时和开发人员时间都在寻找有效的翻译.只需在所有适当位置插入演员阵容可能需要数周时间.

c c++ enums flags

3
推荐指数
1
解决办法
945
查看次数

具有BOOL标志的应用程序状态

我的应用程序中有5个状态,我使用BOOL标记来标记它们.但这并不简单,因为当我想改变状态时,我必须写5行来改变所有标志.

你能写一些想法或简单的代码来解决这个问题吗?

码:

//need to choose second state
flag1 = false;
flag2 = true;
flag3 = false;
flag4 = false;
flag5 = false;
Run Code Online (Sandbox Code Playgroud)

而且,这很糟糕,因为我可以一次选择2个状态.

PS 我发现现代和更多Apple方式.答案如下.

c flags state boolean objective-c

3
推荐指数
1
解决办法
1993
查看次数

Android,Intent.FLAG_ACTIVITY_CLEAR_TOP似乎不起作用?

在我的菜单中,我有一些项目.Home是我希望成为我的应用程序的根目录的项目,每当用户点击它时,Android清除堆栈然后返回到主屏幕.

这是我的代码:

menu.setOnItemClickedListener(new MenuClickedListener() {
            public void eventOccured(int id) {          

                Intent intent = null;
                switch(id) {
                    case 1: intent = new Intent(context, More.class);           break;
                    case 2: intent = new Intent(context, FavoriteScreen.class); break;
                    case 3: intent = new Intent(context, VideoShowList.class);  break;
                    case 4: intent = new Intent(context, ShoppingList.class);   break;
                    case 5: intent = new Intent(context, MainScreen.class); 
                            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            break;                  
                }       

                if(intent != null)
                    context.startActivity(intent); 
            }
        });
Run Code Online (Sandbox Code Playgroud)

菜单工作正常,但似乎标志不起作用,因为从主屏幕,我去第二和第三屏幕然后我点击菜单的主页项目,并回到主屏幕.现在,当我点击后退按钮时,我会转到第三个屏幕,第二个屏幕和主屏幕.

我将此菜单设计为窗口小部件,以便将其设置一次并在我的所有屏幕上重复使用它.

任何建议,将不胜感激.谢谢.

flags android android-intent

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

如何将Android暂停活动带到前面

我有一个活动启动异步任务,侦听来自服务器的消息.当用户点击主页按钮时,活动暂停,异步任务继续在后台运行.当某个消息到达时,我希望活动恢复并在不重新创建的情况下到达前面.我尝试了以下内容.

机器人:launchMode = "singleTop"

intent = new Intent(getBaseContext(), MainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这会将活动带到前面,但会重新启动活动.

我也试过了

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);                   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Run Code Online (Sandbox Code Playgroud)

但这些都没有将活动带到前线.

什么是恢复应用程序的正确标志,如果我从主屏幕重新启动它会发生什么.

flags android-intent

3
推荐指数
1
解决办法
6582
查看次数

了解TCP URG标志

我用Scapy用Python做了一个简单的portscanner.

我设置Metasploitable并打开多个端口,例如.21,22,23和8009.

然后我启动了portscan vs那些端口,Scapy确实告诉我它们是开放的.

但是,如果我扫描Metasploitable上未打开的端口,我会返回TCP标志20,这是URG TCP标志.这是从URG标志的描述中取出的.

URG标志用于通知接收站段内的某些数据是紧急的并且应该优先.如果设置了URG标志,则接收站将评估紧急指针,即TCP标头中的16位字段.该指针指示从第一个字节开始计算的段中有多少数据是紧急的.

对我来说,紧急数据并没有真正响起.

我不明白为什么我得到了URG标志回来,我正在寻找的,为什么我明白了,这意味着什么,即使该端口是关闭的理解,我能永远得到URG响应回来,如果该端口是开放的.

flags tcp

3
推荐指数
1
解决办法
7856
查看次数

SDL_WINDOW_INPUT_FOCUS和SDL_WINDOW_MOUSE_FOCUS

什么是SDL_WindowFlags SDL_WINDOW_INPUT_FOCUS和SDL_WINDOW_MOUSE_FOCUS用于?

如果我没有弄错,SDL_WINDOW_INPUT_GRABBED指示哪个窗口正在接收输入,如果有的话.但我根本看不出其他两个标志是什么意思.我检查了SDL_video.h以查看是否可以获得更多信息,但我读到的内容没有帮助:

SDL_WINDOW_INPUT_GRABBED = 0x00000100,      /**< window has grabbed input focus */
SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */
SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */
Run Code Online (Sandbox Code Playgroud)

我没有看到"窗口抓住输入焦点"和"indow有输入焦点"之间的区别.
INPUT_FOCUS仅用于键盘输入,MOUSE_FOCUS用于鼠标输入吗?在这种情况下,为什么INPUT_GRABBED不是这两者的组合?

此外,是否可以有一个鼠标焦点的窗口和另一个具有"输入"焦点的窗口(无论"输入"在这里意味着什么,除了"鼠标"),或类似的东西?

flags sdl-2

3
推荐指数
1
解决办法
1562
查看次数

AM_LDFLAGS和LDFLAGS之间有什么区别

我想知道AM_LDFLAGS和LDFLAGS之间有什么区别,因为我遇到了一个错误

error: AM_LDFLAGS must be set with '=' before using '+='
Run Code Online (Sandbox Code Playgroud)

当我在foreach循环中使用AM_LDFLAGS时,我的make文件代码如下所示:

program_INCLUDE_DIRS := /usr/bin/PR__bin

program_LIBRARY_DIRS := /usr/lib/PR__lib

CFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))

AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
Run Code Online (Sandbox Code Playgroud)

c flags automake makefile

3
推荐指数
1
解决办法
2412
查看次数

WPF多枚枚举标志转换器参数?

如果枚举值为(A | B | C),我需要一个可见的控件.

我知道如何使用转换器将控件的可见性绑定到SINGLE枚举(A).

在这种情况下,我该如何做同样的事情呢?参数会怎么样?

这是我使用的转换器:

public class EnumToVisibilityConverter : IValueConverter {
    public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture ) {
        if ( value == null || parameter == null || !( value is Enum ) )
            return Visibility.Hidden;
        string State = value.ToString( );
        string parameterString = parameter.ToString( );

        foreach ( string state in parameterString.Split( ',' ) ) {
            if ( State.Equals( state ) )
                return Visibility.Visible;
        }
        return Visibility.Hidden;
    }

    public object ConvertBack( …
Run Code Online (Sandbox Code Playgroud)

c# wpf enums flags valueconverter

3
推荐指数
1
解决办法
3623
查看次数

有没有办法在XAML Xamarin中指定多个LayoutFlags?

我有一个标签设置为相对定位和自动尺寸,如下所示

<Style TargetType="Label">
    <Setter Property="BackgroundColor" Value="Transparent" />
    //Something like below?            
    <Setter Property="AbsoluteLayout.LayoutFlags" Value="PositionProportional | SizeProportional" />
</Style>

....

<Label Text="0" AbsoluteLayout.LayoutBounds="0.5, 0.00499999999999998, AutoSize, AutoSize"/>
Run Code Online (Sandbox Code Playgroud)

有没有办法在XAML中指定多个LayoutFlags?

当我在具有更高分辨率的设备上运行代码时,标签的相对位置是正确的,但标签的大小(字体)不会增加,尽管它设置为AutoSize.我想我还需要为SizeProportional和PositionProportional指定一个LayoutFlag.但是如何在XAML中做到这一点?目前,当设备旋转到横向时,字体不会调整大小.

size layout flags xaml xamarin

3
推荐指数
1
解决办法
1261
查看次数

为什么Android Studio 3.0.0在APK上设置FLAG_TEST_ONLY?

我已经通过3.0.0-rcX(来自Canary频道)到达Android Studio 3.0.0(来自稳定频道).

当我启动一个全新的应用程序并构建它时,以下代码(在应用程序内)显示已设置FLAG_TEST_ONLY标志.

Log.e(TAG, "ApplicationInfo: " + (getApplicationInfo().flags & ApplicationInfo.FLAG_TEST_ONLY));

10-31 09:54:05.226 16129-16129/com.example.dummy E/MainActivity: ApplicationInfo: 256
Run Code Online (Sandbox Code Playgroud)

该应用程序的清单是:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dummy">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

该标志使设备策略控制器无法安装它:使用设备策略控制器在后台升级应用程序

为什么设置此标志,以及如何阻止它被设置?

flags android apk android-studio android-studio-3.0

3
推荐指数
1
解决办法
788
查看次数