在我正在重写的内部的C++库中,我有一些无符号整数变量,我想将其转换为枚举:
enum InitType {
INIT,
NON_INIT
};
Run Code Online (Sandbox Code Playgroud)
我有一个这种类型的变量:
InitType InitVar;
Run Code Online (Sandbox Code Playgroud)
该库是从其变量为普通整数的代码的另一部分调用的:
uint32_t UnsignedIntVar;
Run Code Online (Sandbox Code Playgroud)
我想将从调用者传递的无符号版本分配给库内部枚举:
InitVar = UnsignedIntVar;
Run Code Online (Sandbox Code Playgroud)
但编译器不喜欢这样:
error: invalid conversion from 'uint32_t' to 'InitType'
Run Code Online (Sandbox Code Playgroud)
执行此转换的最简洁方法是什么?
以下是我的一些想法:
如果enum只有两个值,我可以这样做:
InitVar = UnsignedIntVar ? Init : NonInit;
Run Code Online (Sandbox Code Playgroud)
这是我想做这样一个任务的时候写的很多东西.
如果它有更多值,我可以创建一个转换表:
InitType Uint2InitTypeConv = {INIT_0, INIT_1, INIT_2...};
Run Code Online (Sandbox Code Playgroud)
哪里INIT_x只是枚举的名称.然后我可以使用表格进行翻译:
InitVar = Uint2InitTypeConv[UnsignedIntVar];
Run Code Online (Sandbox Code Playgroud)
这看起来很干净.但是,我认为我应该可以为此重载operator=,但我似乎无法做到这一点.这很容易包含我能提出的任何其他丑陋.
任何人都可以解释为以下两种语法之间的区别:
($x) = $a =~ /(\d+)/;
$y = $a =~ /(\d+)/;
Run Code Online (Sandbox Code Playgroud)
在示例中,if $a= 100lkjthen
$x = 100but $y = 1.
使用此代码,我试图提取$a字符串中的数值.
我不明白为什么?
我正在自学Python,我在Dive into Python 第5.3节中看到以下内容:
按照惯例,调用任何Python类方法的第一个参数(对当前实例的引用)
self.这个参数填充了thisC++或Java中保留字的作用,但self它不是Python中的保留字,仅仅是命名约定.尽管如此,请不要称之为self; 这是一个非常强大的惯例.
考虑到self是不是一个Python关键字,我猜,这有时会使用别的有用的.有这种情况吗?如果没有,为什么它不是关键字?
我在Linux下运行Python CLI:
bla:visualization> python
Python 2.1.1 (#18, Nov 1 2001, 11:15:13)
[GCC egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)] on linux2
Type "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)
由于某种原因,箭头键和删除键不起作用:
删除:
>>> x^H^H^H
Run Code Online (Sandbox Code Playgroud)
向上箭头:
>>> x^[[A^[[A
Run Code Online (Sandbox Code Playgroud)
等等...
我怎样才能做这些工作?
某些旧的x86指令在64位模式下未定义.例如LDS,LES和()和()指令的LSS短操作码.INC r1640 + rwINC r3240 + rd
是否有任何仅在64位模式下定义的指令,而不是在32位保护模式下?
编辑: 上下文是x86处理器的开发.我想确保我与规范兼容.
我正在编写一个脚本来查找目录中的某些文件并对其进行处理.我继续写下面的内容:
opendir DIR, $dir;
@files = readdir DIR;
closedir DIR;
Run Code Online (Sandbox Code Playgroud)
虽然我可以(实际上应该)将它包装在一个函数中,但我想知道是否有更优雅的方法来做到这一点?
我刚开始用专业的Java背景和一些(如果没有太多)C++知识学习C,我很惊讶这在C中不起作用:
struct Point {
int x;
int y;
};
Point p;
p.x = 0;
p.y = 0;
Run Code Online (Sandbox Code Playgroud)
似乎我必须声明p使用struct Point作为类型或使用typedef.这段代码在C99中有效吗?或者这是一个"C++的东西"?
我在RHEL上运行gcov/gcc 4.1.2.
当我想为gcov文件指定目录时.关于如何做到这一点的任何想法?