小编Che*_*ron的帖子

Bash整数比较

我想写一个bash脚本,检查是否至少有一个参数,如果有一个参数,如果该参数是0或1.这是脚本:

#/bin/bash
if (("$#" < 1)) && ( (("$0" != 1)) ||  (("$0" -ne 0q)) ) ; then
echo this script requires a 1 or 0 as first parameter.
fi
xinput set-prop 12 "Device Enabled" $0
Run Code Online (Sandbox Code Playgroud)

这会出现以下错误:

./setTouchpadEnabled: line 2: ((: ./setTouchpadEnabled != 1: syntax error: operand expected (error token is "./setTouchpadEnabled != 1")
./setTouchpadEnabled: line 2: ((: ./setTouchpadEnabled -ne 0q: syntax error: operand expected (error token is "./setTouchpadEnabled -ne 0q")
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

bash comparison integer

40
推荐指数
4
解决办法
10万
查看次数

x> -1 vs x> = 0,是否存在性能差异

我听过一位老师放弃了这一次,从那以后一直困扰着我.假设我们要检查整数x是否大于或等于0.有两种方法可以检查:

if (x > -1){
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

if (x >= 0){
    //do stuff
} 
Run Code Online (Sandbox Code Playgroud)

根据这个老师>会稍快一点>=.在这种情况下它是Java,但据他说,这也适用于C,c ++和其他语言.这句话有什么道理吗?

c++ java operators premature-optimization micro-optimization

36
推荐指数
5
解决办法
2123
查看次数

无法在Microsoft Visual Studio中打开Windows.h

首先:我正在使用Microsoft Visual Studio 2012

我是C#/ Java开发人员,现在我正在尝试使用Microsoft SDK和C++为kinect编程.所以我开始使用Color Basics示例,我无法编译它.起初,没有一个类能够找到Windows.h. 所以我安装了(或者重新安装,我不确定)Windows SDK,并将SDK的include目录添加到项目的包含"路径"中.然后所有问题都消失了,除了一个:

Error   5   error RC1015: cannot open include file 'windows.h'. C:\temp\ColorBasics-D2D\ColorBasics.rc  17  1   ColorBasics-D2D
Run Code Online (Sandbox Code Playgroud)

这就是错误.没有理由,系统可以找到它,因为它被用在多个其他文件中,只有这个文件无法使用它.作为参考,整个文件是bugging(ColorBasics.rc):

//------------------------------------------------------------------------------
// <copyright file="ColorBasics-D3D.rc" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || …
Run Code Online (Sandbox Code Playgroud)

c++ windows visual-studio kinect

30
推荐指数
4
解决办法
15万
查看次数

CMake安装:安装配置文件

我希望CMake为我制定安装规则,它也会自动安装配置和其他东西.我看了这个问题,但补充说:

add_executable(solshare_stats.conf solshare_stats.conf)
Run Code Online (Sandbox Code Playgroud)

我的CMakeLists.txt文件只给了我警告和错误:

CMake Error: CMake can not determine linker language for target:solshare_stats.conf
CMake Error: Cannot determine link language for target "solshare_stats.conf".
...
make[2]: *** No rule to make target `CMakeFiles/solshare_stats.conf.dir/build'.  Stop.
make[1]: *** [CMakeFiles/solshare_stats.conf.dir/all] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

如何将配置,初始化和/或日志文件添加到CMake安装规则?

这是我完整的CMakeLists.txt文件:

project(solshare_stats)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST} )
add_executable(solshare_stats.conf solshare_stats.conf)
target_link_libraries(solshare_stats mysqlcppconn)
target_link_libraries(solshare_stats wiringPi)
if(UNIX)
    if(CMAKE_COMPILER_IS_GNUCXX)
        SET(CMAKE_EXE_LINKER_FLAGS "-s")
        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall -std=c++0x")
    endif()
    install(TARGETS solshare_stats DESTINATION /usr/bin COMPONENT binaries)
    install(TARGETS solshare_stats.conf DESTINATION …
Run Code Online (Sandbox Code Playgroud)

cmake

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

有点与布尔值的比较

假设我有一组标志,用 uint16_t 编码flags。例如,AMAZING_FLAG = 0x02。现在,我有一个功能。这个函数需要检查我是否要更改标志,因为如果我想这样做,我需要写入闪存。那是昂贵的。因此,我想要一个检查,告诉我是否flags & AMAZING_FLAG等于doSet. 这是第一个想法:

setAmazingFlag(bool doSet)
{
    if ((flags & AMAZING_FLAG) != (doSet ? AMAZING_FLAG : 0)) {
        // Really expensive thing
        // Update flags
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是一个直观的 if 语句。我觉得应该有更好的方法,例如:

if ((flags & AMAZING_FLAG) != doSet){

}
Run Code Online (Sandbox Code Playgroud)

但这实际上不起作用,true似乎等于0x01.

那么,有没有一种巧妙的方法可以将一点与布尔值进行比较?

c gcc boolean bitwise-operators

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

在Windows 8上获取DirectShow示例

我想为Windows 8创建一个虚拟网络摄像头,我有两个选择:DirectShow或Microsoft Media Foundation.经过一番环顾,我发现DirectShow有更多的例子,甚至在Stackoverflow上它也被推荐超过MMF.所以我想开始使用一些示例,为此我需要strmbase.dll,我需要从DirectShow示例的BaseClass示例中编译自己.

但是在Windows 8上获取样本似乎不太可能.根据页面,它应该是Windows 8 SDK的一部分,但这是完全安装的,并且我的计算机上的任何位置都没有基类名称的文件夹.它也是Windows 7 sdk的一部分,但是拒绝安装.我还读到它应该是DirectX SDK的一部分,但根据MS的说法,它已包含在Windows 8 SDK中,因此DirectX SDK拒绝安装.

如何在Windows 8上安装DirectShow示例?

directshow windows-8

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

QMap 和 std::unique_ptr

我试图防止裸指针,防止内存泄漏等。我也想映射intINuiSensor*。由于我也在使用 Qt,因此我尝试使用它QMap<int, std::unique_ptr<INuiSensor>>来执行此操作,但是 QMap 的源代码使这变得不可能:

template <class Key, class T>
Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey, const T &avalue)
{
    detach();
    Node *n = d->root();
    Node *y = d->end();
    Node *last = 0;
    bool  left = true;
    while (n) {
        y = n;
        if (!qMapLessThanKey(n->key, akey)) {
            last = n;
            left = true;
            n = n->leftNode();
        } else {
            left = false;
            n = n->rightNode();
        }
    }
    if (last && !qMapLessThanKey(akey, last->key)) …
Run Code Online (Sandbox Code Playgroud)

c++ qt unique-ptr qmap

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

将嵌入式程序拆分为内存中的多个部分

我正在开发一个嵌入式系统(Stellaris Launchpad)并编写一个简单的操作系统(作为一个爱好项目)。使用的工具链是 gcc-none-eabi。

我的下一步是习惯 MPU 以允许内核阻止用户程序更改特定数据。我有一堆 C 文件,我把它们分成两部分:内核和其他。我有以下链接器脚本可以开始:

MEMORY
{
    FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000
    SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
}

SECTIONS
{
    .text :
    {
        _text = .;
        KEEP(*(.isr_vector))
        *(.text*)
        *(.rodata*)
        _etext = .;
    } > FLASH

    .data : /*AT(ADDR(.text) + SIZEOF(.text))*/ /*contains initialized data*/
    {
        _data = .;
        *(vtable)
        *(.data*)
        _edata = .;
    } > SRAM AT > FLASH

    .bss : AT (ADDR(.data) + SIZEOF(.data)) /*contains unitialized data (should be …
Run Code Online (Sandbox Code Playgroud)

embedded linker linker-scripts

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

为 VHDL 设计运行多个测试平台

每当我创建 VHDL 设计时,我都会有很多模块。这些模块中的每一个都连接到一个主文件,因此所有内容都被合成。但我想为这些模块中的每一个编写单独的测试平台,并为全局流程编写一个。如果我能做一些事情将所有这些测试平台连接在一起并让它们连续运行,在一次运行中测试我的整个设计,那就太好了。我怎么能这样做?我喜欢使用 GHDL 和断言。是否可以创建一个超级测试平台?或者迭代它们的shell脚本会更好吗?

verification unit-testing vhdl ghdl test-bench

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

{ctor}不是<BaseClass>的成员

我有一个名为GLObject的基类,带有以下标题:

class GLObject{
    public:
        GLObject(float width = 0.0, float height = 0.0, float depth = 0.0, 
                 float xPos= 0.0, float yPos = 0.0, float zPos =0.0, 
                 float xRot =0.0, float yRot = 0.0, float zRot = 0.0);
    ... //Other methods etc
};
Run Code Online (Sandbox Code Playgroud)

和CPP:

GLObject::GLObject(float width, float height, float depth, 
                    float xPos, float yPos, float zPos, 
                    float xRot, float yRot, float zRot){
    this->xPos = xPos;
    this->yPos = yPos;
    this->zPos = zPos;
    this->xRot = xRot;
    this->yRot = yRot;
    this->zRot = zRot;
    this->width …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance constructor

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