小编Dan*_*nny的帖子

不能“git bisect reset”;无尽的藏匿/重置循环

一分为二后,我想恢复到正常状态并恢复最新版本。

但是, git git bisect reset抱怨某些具有本地更改的文件会被 checkout 覆盖,我应该先存储

藏匿并再次尝试重置抱怨某些不同的文件会被覆盖,我应该藏匿。把那个藏起来让我回到第一个错误,依此类推,循环往复。

IE

混帐藏匿处;git 平分重置

错误:文件 A、B 和 C 将被覆盖。请藏好

混帐藏匿处;git 平分重置

错误:文件 D 将被覆盖。请藏好

混帐藏匿处;git 平分重置

错误:文件 A、B 和 C 将被覆盖。请藏好

混帐藏匿处;git 平分重置

错误:文件 D 将被覆盖。请藏好

等等。我想清除所有的二等分并返回到最新的提交。

有任何想法吗?

[完整成绩单]

   powerpro:source_build danny$ git stash ; git bisect reset
Saved working directory and index state WIP on (no branch): 01993b2 tsAnalysis changed to little Endian (htonl() etc)
HEAD is now at 01993b2 tsAnalysis changed to little Endian (htonl() etc)
error: Your …
Run Code Online (Sandbox Code Playgroud)

git

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

比std :: set更快的查找

我需要对一些遗留数据包处理代码进行更快的成员资格查找,这需要识别具有特定ID的数据包是否在特定列表中.

该列表仅每隔几秒更新一次,而数据包匹配经常发生,因此查找性能比插入/删除等更重要.

一般流程:

forall(special_PacketIDs)
{
  pktIdSet.insert(theSpecialPktId)
}

while (1)
{
  pkt = readPkt();
  pktID = getPktIdOfPkt(pkt);

  if ( aSpecialPkt(pktID) )
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

现在,aSpecialPkt(pktId)定义为:

bool PktProcessor::aSpecialPkt(unsigned short pid)
{
  return pktPidSet.find(pid) != pktPidSet.end();
}
Run Code Online (Sandbox Code Playgroud)

gprof报告了在std :: set :: find()中花费的大量时间

pktId的范围仅为8192个可能的值.以内存为代价分配线性阵列会更快,例如:

class LinearSet
{
public:
  void insert(pid) { mPktIdSet[pid] = true; }
  bool elementExists(pid)  { return mPktIdSet[pid]; }
private:
  bool mPktIdSet[8192];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在保持最佳性能的同时,是否有更多的"C++"方法可以做到这一点?

c++ stdset

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

将C++链接到静态库; 未定义的引用错误

我正在尝试将一个小的C++测试程序链接main.o到第三方静态库,但是会得到一些无法解释的undefined reference错误.

特别:

g++  -o secoTest -lpthread  main.o  libEAPI.a
main.o: In function `main':
main.cpp:(.text+0x29fe): undefined reference to `EApiWDog_SetConfigAndStart(unsigned int, unsigned int, unsigned int, unsigned int, unsigned char, unsigned char, unsigned char)'
main.cpp:(.text+0x33fc): undefined reference to `EApiSetCarrier(unsigned char)'
main.o:main.cpp:(.text+0x3956): more undefined references to `EApiSetCarrier(unsigned char)' follow
main.o: In function `main':
main.cpp:(.text+0x3965): undefined reference to `EApiGPIOGetSerialCfg(unsigned char*)'
main.cpp:(.text+0x3a0a): undefined reference to `EApiSetCarrier(unsigned char)'
main.cpp:(.text+0x3a19): undefined reference to `EApiGPIOSetSerialCfg(unsigned char)'
main.cpp:(.text+0x3adf): undefined reference to `EApiFanEnable(unsigned int, unsigned char)'
main.cpp:(.text+0x3b83): …
Run Code Online (Sandbox Code Playgroud)

c++ static-libraries

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

返回 std::string 的函数返回零

在维护大型遗留代码库时,我遇到了这个函数,它用作 XML 树的访问器。

std::string DvCfgNode::getStringValue() const
{
    xmlChar *val = xmlNodeGetContent(mpNode);
    if (val == 0)
        return 0;

    std::string value = (const char *)val;
    xmlFree(val);
    return value;
}
Run Code Online (Sandbox Code Playgroud)

这个函数怎么能返回'0'?在 C 中,您可以返回一个零指针,char *表示未找到数据,但这在 C++ 中可以使用 std::string 吗?我不这么认为,但对 C++ 不够了解。

(10 岁)代码在 C++ 98 下编译和运行。

编辑我

感谢大家的评论。回答几个问题:

a) 代码实际上是 18 岁,大约有 500K-1M 行(?)

b) 异常处理打开,但try-catch除了几个 in 之外,任何地方都没有块main(),这会导致程序立即终止。

c)调用代码中的糟糕设计似乎“信任”getStringValue()返回正确的值,所以很多类似的东西:

std::string s = pTheNode->getStringValue()
Run Code Online (Sandbox Code Playgroud)

可能只是幸运它从未返回零(或者如果它返回了,直到现在还没有人发现该错误)。

c++

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

C++指针分配不起作用(关闭34个字节)

在大型单线程C++应用程序(使用GCC 4.4.7 20120313编译)中,简单指针赋值不等于原始指针值:

class DvComVectorStreamBase : virtual public std::ios
{
    // some stuff here
};

class DvComVectorOStream : public DvComVectorStreamBase, public std::ostream
{
public:
    DvComVectorOStream(int which = std::ios::out, size_t capacity = 0) :
        DvComVectorStreamBase(which, capacity)
    {}
};


class Formatter : public aStandAloneClass
{
    // cruft removed

protected:
    void initFunction();

    ostream*                 mpStream;
    DvComVectorOStream*      mpVectorOStream;
}

Formatter:initFunction()
{
    printf("mpStream %p mpVectorOStream %p\n", (void *)mpStream, (void *)mpVectorOStream);
    if (mpVectorOStream == 0)
        mpVectorOStream = new DvComVectorOStream(ios::out, 32768);
    else
        mpVectorOStream->clear();

    printf("mpStream %p mpVectorOStream %p\n", (void …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

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

标签 统计

c++ ×4

git ×1

pointers ×1

static-libraries ×1

stdset ×1