我想写一个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)
我究竟做错了什么?
我听过一位老师放弃了这一次,从那以后一直困扰着我.假设我们要检查整数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
首先:我正在使用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) 我希望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) 假设我有一组标志,用 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
.
那么,有没有一种巧妙的方法可以将一点与布尔值进行比较?
我想为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示例?
我试图防止裸指针,防止内存泄漏等。我也想映射int
到INuiSensor*。由于我也在使用 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) 我正在开发一个嵌入式系统(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) 每当我创建 VHDL 设计时,我都会有很多模块。这些模块中的每一个都连接到一个主文件,因此所有内容都被合成。但我想为这些模块中的每一个编写单独的测试平台,并为全局流程编写一个。如果我能做一些事情将所有这些测试平台连接在一起并让它们连续运行,在一次运行中测试我的整个设计,那就太好了。我怎么能这样做?我喜欢使用 GHDL 和断言。是否可以创建一个超级测试平台?或者迭代它们的shell脚本会更好吗?
我有一个名为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++ ×4
bash ×1
boolean ×1
c ×1
cmake ×1
comparison ×1
constructor ×1
directshow ×1
embedded ×1
gcc ×1
ghdl ×1
inheritance ×1
integer ×1
java ×1
kinect ×1
linker ×1
operators ×1
qmap ×1
qt ×1
test-bench ×1
unique-ptr ×1
unit-testing ×1
verification ×1
vhdl ×1
windows ×1
windows-8 ×1