对于大型软件,记笔记有助于理解大局.
你怎么做笔记?用笔/纸,或只是一个记事本; 你通常会写什么来记录?
当函数调用深入时,如何处理C中例程的错误返回?
由于C不提供异常抛出机制,我们必须检查每个函数的返回值.例如,"a"例程可以被"b"调用,而"b"可以被许多其他例程调用,所以如果"a"返回错误,那么我们必须在"b"和所有其他例程中检查它叫"b".
如果"a"是一个非常基本的例程,它可以使代码变得复杂.有这样的问题的解决方案吗?实际上,在这里我希望得到一个快速的返回路径,如果发生这样的错误,所以我们只需要在一个地方处理这个错误.
clearcase的新手。
由于 clearcase 的配置与 git 中的其他概念有很大不同,我可能是指具有指定版本/分支路径的任何文件的日志。
就像我想显示所有元素匹配的日志:
element * .../specified-lable-or-branch/
Run Code Online (Sandbox Code Playgroud) 从文件:
when :: (Monad m) => Bool -> m () -> m ()
when p s = if p then s else return ()
Run Code Online (Sandbox Code Playgroud)
该when函数采用布尔参数和单元()类型的monadic计算,并仅在布尔参数为时执行计算True.
===
作为一个Haskell新手,我的问题是对我来说m ()是一些"无效"数据,但在这里文档提到它是计算.是因为Haskell的懒惰吗?
我想为服务器程序添加命令行界面支持.
因此,每次我想检查服务器的状态时,我都可以telnet到服务器的控制端口,并输入命令来检查服务器的状态.
是否有任何开源库实现这样的功能所以我不需要从头开始编写它?
此外,如果库可以提供更多功能,如cisco的命令行界面(Tab键提示,命令查询,vi模式,甚至基于符号的命令),那将是很好的.
我想使用map进行键/成员搜索,问题是该类包含malloc调用分配的缓冲区成员.
struct Key {
int key1;
int key2;
bool operator < (Key & a) { .... }
};
struct Entity {
unsigned char *data;
};
typedef std::map(Key, Entity) TMap;
Run Code Online (Sandbox Code Playgroud)
然后我可以用键插入数据,如:
Tmap map;
Key key;
Entity ent;
ent.data = malloc(size);
key.key1 = xx;
key.key2 = xx;
map.insert( ...(key,ent));
Run Code Online (Sandbox Code Playgroud)
问题是我希望删除地图时自动释放"ent.data"指针.同时,我希望在进行地图查找操作时可以访问"数据"来读取缓冲数据.
我试图将析构函数添加到结构实体,但它似乎导致一些重复的免费问题.
解决方案是什么?
[解决方案]:1.使用shared_ptr:
typedef std::tr1:shared_ptr(unsigned char) CharPtr;
struct Entity {
CharPtr data;
}
ent.data = CharPtr((unsigned char*)malloc(size), free);
Run Code Online (Sandbox Code Playgroud)
或另一种解决方案 使用Vector作为Eugene Homyakov提到.
鉴于:
unsigned int a, b, c, d;
Run Code Online (Sandbox Code Playgroud)
我想要:
d = a * b / c;
Run Code Online (Sandbox Code Playgroud)
和(a*b)可能溢出; 也(b/c)可能等于零并且精度较低.
也许一个64位的演员可以让事情发挥作用,但我想知道在d中获得最准确结果的最佳方法.
有什么好的解决方案吗?