小编and*_*ykx的帖子

(重新)使用初始值将矢量初始化为特定长度

作为函数参数,我得到一个vector<double>& vec具有未知长度和值的输出向量,因此是非常量的.我想将此向量初始化为具有全零的特定长度n.

这会奏效

vec.clear();
vec.resize( n, 0.0 );
Run Code Online (Sandbox Code Playgroud)

这也可行:

vec.resize( n );
vec.assign( n, 0.0 );
Run Code Online (Sandbox Code Playgroud)

第二个更有效(因为没有涉及内存释放/分配)?有没有更有效的方法来做到这一点?

c++ stl initialization

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

如何为单独的调试和发布构建目录创建目标?

我正在寻找建议以在递归 makefile 系统中正确处理单独的调试和发布构建子目录,该系统使用 gnumake 手册中记录的 $(SUBDIRS) 目标将 make 目标应用于(源代码)子目录。

具体来说,我对实现“all”、“clean”、“realclean”等目标的可能策略很感兴趣,这些目标要么假设其中一棵树要么应该在两棵树上都工作导致问题。

我们当前的 makefile 使用一个 COMPILETYPE 变量,该变量被设置为 Debug(默认)或 Release('release' 目标),它正确地执行构建,但清理和 make all 仅适用于默认的 Debug 树。传递 COMPILETYPE 变量变得笨拙,因为是否以及如何执行此操作取决于实际目标的值。

makefile gnu-make

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

如何处理shell脚本中的NFS延迟

我正在编写shell脚本,其中很多时候会将一些东西写入文件,然后执行一个读取该文件的应用程序.我发现,通过我们公司,网络延迟差别很大,因此一个简单sleep 2的例子就不够健壮.

我试着编写一个(可配置的)超时循环,如下所示:

waitLoop()
{
   local timeout=$1
   local test="$2"

   if ! $test
   then
      local counter=0
      while ! $test && [ $counter -lt $timeout ]
      do
         sleep 1
         ((counter++))
      done

      if ! $test
      then
         exit 1
      fi
   fi
}
Run Code Online (Sandbox Code Playgroud)

这适用于test="[ -e $somefilename ]".但是,测试存在是不够的,我有时需要测试某个字符串是否写入文件.我试过了 test="grep -sq \"^sometext$\" $somefilename",但这没用.有人可以告诉我为什么吗?

是否有其他更简洁的选项来执行此类测试?

bash ksh latency

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

从检查堆栈中获取完全限定的方法名称

我无法完成以下功能:

def fullyQualifiedMethodNameInStack(depth=1):
    """
    The function should return <file>_<class>_<method> for the method in the 
    stack at specified depth.
    """
    fileName=inspect.stack()[depth][1]
    methodName=inspect.stack()[depth][3]
    class= """ please help!!! """
    baseName=os.path.splitext( os.path.basename( fileName ) )[0]
    return '{0}_{1}_{2}'.format( baseName, className, methodName )
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我想要正在执行的方法的类名。Inspect返回的堆栈只有方法名,不知道如何找到属于该方法的类。

python

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

如何在提交之前自动化或促进多平台构建/测试?

我们的软件基于Linux和Windows平台构建.根据开发人员的偏好,在任一平台上开发和测试贡献,然后将其提交到我们的subversion存储库.然后证明该贡献不是建立在另一个平台上,并且必须进行修复.另一个平台上的修复可能会再次破坏原始平台上的构建,依此类推.

在提交之前,我宁愿看到在另一个平台上构建(并进行回归测试)贡献.我们有一个连续构建服务器(CruiseControl),但该服务器是从存储库构建的.我正在寻找一个解决方案,其中连续构建服务器构建在另一个平台上作为预提交检查,然后在构建和测试成功时提交内容.

有什么建议?

build-automation continuous-integration cruisecontrol pre-commit

5
推荐指数
2
解决办法
683
查看次数

如何在cpp文件中查找包含特定单词的函数

使用grep,vim的grep或其他unix shell命令,我想在大型cpp文件中找到包含特定单词的函数.

在我正在处理的文件中,我正在查找的是缩进行,相应的函数头是从位置0开始并且不是'{'的缩进行上方的第一行.

例如,在以下代码段中搜索JOHN_DOE

int foo ( int arg1 ) 
{
    /// code 
}
void bar ( std::string arg2  )
{
    /// code
    aFunctionCall( JOHN_DOE );
    /// more code
}
Run Code Online (Sandbox Code Playgroud)

应该给我

void bar ( std::string arg2  )
Run Code Online (Sandbox Code Playgroud)

我希望在grep/vim/unix shell脚本中捕获的算法可能最好使用缩进和格式化假设,而不是尝试解析C/C++.

谢谢你的建议.

vim grep

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

编译器如何处理内联导出函数?

如果头文件包含函数定义,则编译器可以内联它。如果导出了函数,则在链接过程中也必须使客户机可以使用该函数的名称和实现。编译器如何做到这一点?它是否内联函数并为外部调用者提供实现?

考虑Foo.h:

class Foo
{
    int bar() { return 1; }
};
Run Code Online (Sandbox Code Playgroud)

Foo :: bar可以内联或不在库foo.so中。如果另一段代码包含Foo.h,它是否总是创建自己的Foo :: bar副本,无论是否内联?

c++ compiler-construction export inline

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

便携式线程API

我知道三个可移植的线程C++ API:

  1. Qt的
  2. 提高::螺纹
  3. GNU Pth

除了可能涉及的许可问题外,这些问题如何比较:

  • 实际可移植性(主要对Linux和Windows感兴趣)
  • 功能
  • 编程易用性
  • 图书馆的支持/开发活动

并且:是否有更好的支持和使用?

c++ qt multithreading boost

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

在输出文件名中使用测试用例名称

我用来boost::test在创建目录和文件的类上运行集成测试.我希望这些文件被命名为测试用例特定的,所以如果我遇到麻烦,我可以很容易地找到哪个测试用例留下了它的目录/文件.

所以我想在我正在使用的fixture的构造函数中使用测试用例名,如下所示.这有可能吗?怎么样?我搜索了boost :: test手册,却找不到这些信息.

例如

struct foo_fixture
{
    foo_fixture() 
    { 
        std::string case_dependent_name( BOOST_TEST_CASE_NAME ); 
        create_directory( case_dependent_name );
    }
};

BOOST_FIXTURE_TEST_CASE ( foo_case_one, foo_fixture )
{
   ...
}
BOOST_FIXTURE_TEST_CASE ( foo_case_two, foo_fixture )
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

c++ boost-test

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

如何在doxygen中记录生成的构造函数

我们使用doxygen来记录我们的课程.我想明确记录一个类已生成构造函数和/或析构函数,以表明我已经考虑过它并决定使用生成的复制构造函数进行复制是安全的.但是,没有声明构造函数/析构函数,因此doxygen不知道文档属于哪个函数.有没有办法让doxygen包括函数注释,即使函数从未被声明?

//! The Foo class documentation
class Foo {
    //! @fn Foo(const Foo&) 
    //! Generated copy constructor OK to use

    //! method documentation
    void method();
}
Run Code Online (Sandbox Code Playgroud)

另外,我根本不想写生成文件的签名.

我想我的另一个选择就是在类标题中描述它.还有其他方法吗?

c++ doxygen

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