小编thu*_*ium的帖子

如何在Github为自己分配问题?

我被要求给自己分配一个问题,问题是由其他人创建的.我在help.github.com上找到了这个指南.

我确实可以看到问题列表,我有问题的"带圆圈的感叹号,打开",但我没有在步骤4中提到的复选框.存储库不是我的.

我该如何分配问题?我错过了吗?

我只是用谷歌搜索了一句话,说"只有管理员可以将任务分配给受让人",这是真的吗?

git github

9
推荐指数
1
解决办法
4713
查看次数

与uint64_t的unsigned long long冲突?

我们对某些类型参数使用模板特化

class my_template_class<uint64_t M>: public my_template_class_base<uint64_t> {
 ....
}

class my_template_class<unsigned long long,M>: public my_template_class_base<unsigned long long> {
 ....
}
Run Code Online (Sandbox Code Playgroud)

这与使用gcc的64位编译完美配合.当我们尝试32位模式时,它会报告上面两个类的"先前定义".

那么与32位编译unsigned long long相同,uint64_t但不是64位编译吗?

编译差异是CXX标志-m32-m64

c++

9
推荐指数
2
解决办法
2万
查看次数

致命错误C1017:使用"#if(false)"时无效的整数常量表达式

有以下代码在Linux下工作,但给MSVS错误

#if (false)
....
#endif
Run Code Online (Sandbox Code Playgroud)

错误是:致命错误C1017:无效的整数常量表达式

我在微软的网站上发现了这个报告:http: //msdn.microsoft.com/en-us/library/h5sh3k99.aspx

虽然与我的情况相比,那里描述的信息略有不同,因为我没有使用"#define"

所以我的问题是:

  1. 有没有办法让它在不改变代码的情况下为MSVC工作?
  2. 如果必须更新代码,那么这种情况的最佳解决方案是什么?

c++ macros boolean visual-studio-2010

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

读取几个字节,跳过N个字节,然后再读取几个字节.怎么样?

我有一个二进制文件,a.bin,其中包含768个字节.

我想把字节16-256,272-512,528-768放进去

char data[720]
Run Code Online (Sandbox Code Playgroud)

我做了一些喜欢的事情

ifstream a1;
a1.open("a.bin", ios::in|ios::binary)

char tmp[256]
a1.read(tmp,256)
Run Code Online (Sandbox Code Playgroud)

然后我做了一些循环并将tmp复制到逻辑中的数据[720].但这看起来真的很愚蠢.所以我想问一下

  1. 如何将数据读取到特定的某个位置?

    a1.read(tmp [2],2)//不允许,如何实现?

  2. 我怎么能跳过某一天?

    a1.read(tmp16,16); 我可以使用它来跳16个字节并且neve使用tmp16,但它看起来很难看.

c++

6
推荐指数
2
解决办法
6358
查看次数

不需要的头文件WinGDI.h

我正在做一些宏

#define report_msg(type,msg_str).......my_special_##type(......)

#define report_error(msg_str) report_msg(ERROR,msg_str)
Run Code Online (Sandbox Code Playgroud)

当我使用Visual Studio 2010 Express编译时,它在linux下工作完美,我看到它给出了以下错误:

error C3861: 'my_special_0': identifier not found
Run Code Online (Sandbox Code Playgroud)

原因是“ ERROR”被解释为0。当我在MSVC中使用“转到定义”时,它将转到WinGDI.h。

/* Region Flags */
#define ERROR 0
Run Code Online (Sandbox Code Playgroud)

问题是为什么包含此WinGDI.h?如何消除它而不接触代码?

c++ visual-studio-2010

6
推荐指数
2
解决办法
4188
查看次数

警告:从“int”转换为“unsigned char”可能会改变其值

代码是:

*(buf+2) |= (unsigned char)(mFlag & 0x7f);
Run Code Online (Sandbox Code Playgroud)

bufunsigned char *并且mFlagunsigned char

我猜是因为返回值operator|=使我收到警告

警告:从“int”转换为“unsigned char”可能会改变其值

我怎样才能消除警告?是因为operator|=吗?

c c++ gcc warnings

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

如何在sh shell中循环参数

我知道"for loop"可用于遍历所有参数.但对于我的代码,我更喜欢

i = 1
if [ ${$i} == xx] ; then
 xxx
fi

((iArg++))

if [ ${$i} == xx] ; then
 xxx
fi
Run Code Online (Sandbox Code Playgroud)

很明显,$ {$ i}无效.我该怎么做才对?

我曾经用csh写csh

$argv[$i]
Run Code Online (Sandbox Code Playgroud)

现在必须使用sh shell.感谢帮助

unix linux shell sh

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

如何使"未使用的参数"警告静音?

我正在清理给定代码的所有警告.(这意味着我并不完全理解每一行逻辑)."[-Wunused-parameter]"已启用且不应关闭.

对于"未使用的参数",我们通常只使用"_ _ attribute _ _((unused))".

对于以下功能,我不能使用上述技巧.

void fun(int* a =0){
    ----variable ptr a is not used at all----
}
Run Code Online (Sandbox Code Playgroud)

有一个干净的解决方案去除警告的任何好主意?

c++ warnings

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

将一个32位浮点数转换为两个16位uint数,然后再转换回该32位浮点数

我正在研究从一个平台到另一个平台的32位浮点数.那么它只允许将16位unsinged int成员传递给transfter寄存器.我想我可以将32位浮点分成两个16位然后再转换到另一侧的32位.

(我使用的是C语言)

喜欢:

float A = 3.14
uint16_t B = A & 0xffff;
uint16_t C = A & 0xffff0000;

float D = C<<16 & B;
Run Code Online (Sandbox Code Playgroud)

显然这是不正确的,因为浮动数据在分配时将转换为unsigned int.那我该怎么办呢?做一些类似的事情会有一些相当成熟的方法

谢谢

c

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

“linux进程地址空间”是如何存储的?

从书中读到,当一个进程启动时,它的私有进程地址空间被创建

假设它是从 0x0 到 0xMAX

空间的一部分是堆,我们写了一个 for 循环来继续 malloc(1k 日期),直到它返回 false。它分配了 3GB 的日期。

那么问题来了,如果一开始就分配了0x0到0xMAX,那说明0x0到0xMAX从一开始就大于3GB(因为有栈,控制...)?

如果一个进程一开始可以占用3GB以上,那一定是我理解错了。

谁能解释这个 0x0 - 0xMAX 是如何存储在乞讨中的?

linux malloc process virtual-memory

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

通过python为字符串添加X零

我使用的是:

tmp=fileA.read(4)
outfile.write(tmp)
Run Code Online (Sandbox Code Playgroud)

但是如果fileA到达结尾并且只剩下2个字节就会出现问题.在那种情况下,tmp的内容将是

xx (Not XXXX any more)
Run Code Online (Sandbox Code Playgroud)

我想补偿丢失的x乘以0,所以它可能就像

xx00
Run Code Online (Sandbox Code Playgroud)

当我写入文件outfile

问题是,我知道我可以使用功能

len(tmp)
Run Code Online (Sandbox Code Playgroud)

要知道我需要添加多少0,有没有简单的方法来添加操作呢?

我能想到

if len(tmp) == 2 : tmp = tmp + "00"
elif len(tmp) == 3: .......
Run Code Online (Sandbox Code Playgroud)

但这是某种"愚蠢"的方法.

有没有办法做到这样:

tmp << (4-len(tmp)) | "0000"
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

python python-2.7

0
推荐指数
1
解决办法
101
查看次数