小编sip*_*ipi的帖子

在C++中声明没有隐式转换的类型

我想声明我自己的数字类型,就像unsigned int一样,但我不希望隐式转换类型.我首先尝试了这个:typedef unsigned int firstID; typedef unsigned int secondID;

但这并不好,因为这两种类型只是unsigned int的同义词,所以可以自由地互换.

我想这会导致错误:

firstID fid = 0;
secondID sid = fid; // no implicit conversion error
Run Code Online (Sandbox Code Playgroud)

但这没关系:

firstID fid = 0;
secondID sid = static_cast<secondID>(fid); // no error
Run Code Online (Sandbox Code Playgroud)

我的理由是函数参数是强类型的,例如:

void f( firstID, secondID ); // instead of void f(unsigned int, unsigned int)
Run Code Online (Sandbox Code Playgroud)

我在寻找什么机制?

谢谢

c++

14
推荐指数
1
解决办法
1511
查看次数

Jenkins上的Android Emulator插件 - 如何延长超时?

我已经设法获得Android Emulator插件设置并使用Jenkins.但是,我的问题是它在3分钟后超时.我只在一个非常慢的nettop Linux盒子(intel atom)上运行它,所以我想它将需要更长的时间来启动模拟器.

有没有办法延长超时?看起来仿真器正在启动; 对于前几次民意调查,它报告为离线,然后没有.

我的控制台输出如下.

谢谢

Started by user Si Pickles
[EnvInject] - Loading node environment variables.
Building in workspace /var/lib/jenkins/jobs/mycompany_myapp/workspace
Updating svn://localhost/mycompany/code/trunk/myappProject at revision '2013-08-11T23:03:06.957 +0100'
At revision 98
no change for svn://localhost/mycompany/code/trunk/myappProject since the previous build
$ /var/lib/jenkins/tools/android-sdk/tools/android list target
[android] Using Android SDK: /var/lib/jenkins/tools/android-sdk
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb start-server
[android] Starting Android emulator
$ /var/lib/jenkins/tools/android-sdk/tools/emulator -no-boot-anim -ports 48437,50001 -avd google17 -no-snapshot-load -no-snapshot-save -no-window -no-audio
* daemon not running. starting it now on port 51447 *
* daemon …
Run Code Online (Sandbox Code Playgroud)

android jenkins android-emulator-plugin

12
推荐指数
1
解决办法
1932
查看次数

在Jenkins上允许不稳定的Android Gradle构建

嗨,我已经在Jenkins上设置了我的Android项目来提供CI.它运行良好,在连接的Android手机上运行测试.测试在Android测试框架上运行,扩展了jUnit3.

不幸的是,如果有任何测试失败,则构建被标记为失败.我希望能够通过两种方式改进这一点:

  1. 允许不稳定的构建
  2. 能够标记已知的测试失败

对于第1项,我尝试将其添加到项目build.gradle中:

connectedCheck {
    ignoreFailures = true
}
Run Code Online (Sandbox Code Playgroud)

但它没有效果.查看构建日志,我意识到实际的测试任务名为connectedInstrumentTest,但未找到此任务:

connectedInstrumentTest {
    ignoreFailures = true
}
Run Code Online (Sandbox Code Playgroud)

原因:

无法在项目':Playtime'上为参数[build_4ldpah0qgf0ukktofecsq41r98 $ _run_closure3 @ 9cd826]找到方法connectedInstrumentTest().

我错过了吗?

谢谢

编辑:继承我的项目build.gradle,没什么特别的:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
        testPackageName "com.bb.pt.test"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }
}

connectedCheck {
    ignoreFailures = true
}
Run Code Online (Sandbox Code Playgroud)

我在詹金斯的gradle设置:

switches: --stacktrace --info
tasks: :pt:assembleDebug :pt:assembleTest :pt:connectedCheck
Run Code Online (Sandbox Code Playgroud)

编辑: …

android gradle jenkins android-testing build.gradle

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

如何#include <windows.h>

在64位系统上使用32位32位MSVC2008.

我曾经被建议永远不要将windows.h包含为'它真正的怪物,并且会大大减慢我的编译时间'.

我尝试将其删除,显然会出现编译错误.我包括windef.h来定义所有的DWORD等,但我很快就知道还有什么定义来获取编译代码.

我现在得到:

2>c:\program files\microsoft sdks\windows\v7.0\include\winnt.h(6361) : error C2146: syntax error : missing ';' before identifier 'ContextRecord'
2>c:\program files\microsoft sdks\windows\v7.0\include\winnt.h(12983) : error C2065: 'PCONTEXT' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)

谁能在这里建议正确的方法?

谢谢

西蒙

c++ include visual-studio-2008

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

Jenkins - 使用Genymotion VM而不是Android Emulator

有没有人设法让Jenkins使用Genymotion android VM,而不是超慢的android-emulator?

Genymotion实际上比我的开发机器上的真实设备更快,因此非常适合运行CI测试.

谢谢你的任何想法.

西蒙

android android-emulator jenkins genymotion

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

从基类解析C++虚函数

对不起,如果这是一个骗局,我无法找到一个非常正确的答案.

我想从基类成员调用一个函数,并让它解析为子类版本.我认为宣布虚拟会做到这一点,但事实并非如此.这是我的方法:

class GUIWindow
{
public:
    GUIWindow()
    {
        SetupCallbacks();
    }

    virtual void SetupCallbacks()
    {
         // This function always called
    }
};

class GUIListbox : public GUIWindow
{
public:
    void SetupCallbacks()
    {
        // This never called
    }
};

GUIListbox lb; // GUIWindow::SetupCallbacks is called :(
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

非常感谢

c++ inheritance virtual-functions

4
推荐指数
1
解决办法
530
查看次数

在c ++文件加载期间UTF8加扰

我知道加载unicode是一个有点劳累的观点,但我看不出如何将呈现给别人的解决方案应用到我的特定问题中.

我有一个Win7/C++/DirectX9 GUI库,可以将文本呈现到屏幕上.我之前从未遇到过任何问题,因为它只能用于西欧语言.现在我必须和匈牙利人一起使用它,这让我很头疼!我特别的问题是加载那种语言中的特殊字符.

举个例子,FELNŐTTEKNEK,意思是ADULT.

如果我将此字符串硬编码到我的应用程序中,它会正确呈现:

guiTitle->SetText( L"FELN?TTEKNEK" );
Run Code Online (Sandbox Code Playgroud)

这将字符串存储为std :: wstring,使用ID3DXFont :: DrawTextW()呈现它.它还证明了我选择的字体Futura CE能够渲染特殊字符(CE =中欧).

到现在为止还挺好.接下来,我只想加载文本文件中的文本.没什么大不了.但结果很糟糕!特殊Ő被另一个字符取代,主要是Å甚至两个字符,如Å(第二个通常是不可打印的)

我确保通过输入文本文件编码为UTF-8并且天真地试图加载它:

wifstream f("data/language.ini");
wstring w;  
getline( f, w );    
guiTitle->SetText( w );
Run Code Online (Sandbox Code Playgroud)

不知何故,我仍然在争抢它.我加载为UTF-8吗?有没有办法确保这个?我只需要确保我在文本编辑器中显示带有文本的宽字符串.

最感激的任何帮助.

c++ windows unicode utf-8 wstring

4
推荐指数
1
解决办法
556
查看次数

WM_MOUSEMOVE - 打包x和y位置

我正在使用原始系统通过将WM_MOUSEMOVE事件直接发送到Flash窗口来控制C++/win32程序中的Flash影片.

它适用于一个轴:

SendMessage( m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos);
Run Code Online (Sandbox Code Playgroud)

但是我想现在发送x和y值.我知道这些包装在WM_MOUSEMOVEs lparam中.在C++中,可以使用MAKEPOINTS或GET_X_LPARAM/GET_Y_LPARAM解压缩.

但是我如何打包x和y,基本上与上面的宏相反.

我猜:

DWORD packed = y << 8 + x;
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ winapi visual-c++

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