小编Bar*_*adé的帖子

CMake添加-Dlibname_EXPORTS编译定义

只需编译目标时,CMake会自动将以下编译定义添加到所有源代码文件中:

-Dlibname_EXPORTS
Run Code Online (Sandbox Code Playgroud)

为什么要这样做,如何禁用它?

cmake

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

使用C++标准库进行线程安全性分析

这描述了如何使用C++中的注释完成静态线程安全性分析:http://clang.llvm.org/docs/ThreadSafetyAnalysis.html

我如何使用标准类型,如std :: mutex和std :: lock_guard?

mutex.h的示例代码注释了自定义接口.我是否在那里定义了"Mutex"类型并使用带注释方法的std :: mutex实现了一个类,或者Clang是否以某种方式带来了带注释的类型?

c++ multithreading clang c++11

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

Akka 中不匹配的消息会怎样?

Akka 文档说不会扫描邮箱中的消息。每条消息按照到达的顺序依次处理(默认为 FIFO)。但是,当我从一个参与者发送一条消息到另一个与接收参与者不匹配的消息时,它既不会移动到死信参与者(我想它会出现在日志中),也不会阻止处理邮箱中的下一条消息一秒后到达,可以正确处理。

邮箱中的不匹配邮件会发生什么情况?

我在 sbt 中使用 Scala 2.10.4 和 Akka 2.4-SNAPSHOT。

package main.scala

import akka.actor._

class SRActor(dest: ActorRef) extends Actor with ActorLogging {
  dest ! A
  dest ! B

  context.stop(self)

  override def receive = {
    case _ => {
      log.info("Finally got something")
    }
  }
}

class SRActorReceiver extends Actor with ActorLogging {
  override def receive = {
    case B =>
      log.info("Finally got B")
  }
}
Run Code Online (Sandbox Code Playgroud)

演员创作:

package main.scala

import akka.actor._
case object A
case object B

object ErrorApp extends …
Run Code Online (Sandbox Code Playgroud)

scala actor akka

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

QVariant 和 std::size_t

QVariant 不支持 std::size_t。使用 std::size_t 值构造 QVariant 对象而不丢失任何平台相关的大小限制的正确方法是什么?

c++ qt qvariant

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

ctest 没有找到 valgrind

打电话

ctest -j4 -DCTEST_MEMORYCHECK_COMMAND="/usr/bin/valgrind" -DMemoryCheckCommand="/usr/bin/valgrind" --output-on-failure -T MemCheck 
Run Code Online (Sandbox Code Playgroud)

Memory checker (MemoryCheckCommand) not set, or cannot find the specified program.
Run Code Online (Sandbox Code Playgroud)

为什么它不会自动找到 valgrind,也不会在手动指定时找到?

c++ valgrind cmake ctest

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

提升精神语法eol

我试图解析以下形式的文件:

// comment bla bla
[sectionname]
key = value
key2=value2


// comment
key = value

[anothersection]
...
Run Code Online (Sandbox Code Playgroud)

使用以下代码.不幸的是,它报告最后一个eol是一个错误,尽管最后的所有eol都应该被接受:(*qi :: eol> - (sectionGrammar>*(+ qi :: eol> sectionGrammar))>*qi :: eol) ,

此外,我真的不知道如何正确解析注释而不采用下一个键值对所需的eol,这是我没有放入Skipper的原因(仅ascii :: blank).

我的最后一个问题是我不知道如何在不复制它们的情况下向boost :: ptr_vector添加节.

这是我的代码:

#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/support_multi_pass.hpp>
#include <boost/spirit/include/classic_position_iterator.hpp> // for more detailed error information

#include <boost/fusion/adapted/std_pair.hpp>
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
#include <boost/fusion/include/adapt_struct.hpp>

#include <boost/bind.hpp>
#include <boost/spirit/home/phoenix/core/argument.hpp>

#include <boost/foreach.hpp>

#include "txt.hpp"

// Only use in global namespace!
BOOST_FUSION_ADAPT_STRUCT(
    wc3lib::map::Txt::Section,
    (wc3lib::string, name)
    (wc3lib::map::Txt::Pairs, entries)
)

namespace wc3lib
{

namespace map …
Run Code Online (Sandbox Code Playgroud)

c++ parsing boost boost-spirit boost-spirit-qi

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

使用重复将Boost Spirit Qi存储到std :: vector中会导致模糊的类模板实例化

将重复语句的结果存储到std :: vector会导致编译错误:

/usr/include/boost/spirit/home/qi/detail/pass_container.hpp:172:12: error: ambiguous 

    class template instantiation for ‘struct boost::spirit::qi::detail::pass_through_container_base<std::vector<Vertex3d<float> >, Vertex3d<float>, Vertex3d<float>, mpl_::bool_<false>, void>’

/usr/include/boost/spirit/home/qi/detail/pass_container.hpp:103:12: error: candidates are: struct boost::spirit::qi::detail::pass_through_container_base<Container, ValueType, Attribute, Sequence, typename boost::enable_if<boost::fusion::traits::is_sequence<Attribute> >::type>
     struct pass_through_container_base<Container, ValueType, Attribute
            ^
/usr/include/boost/spirit/home/qi/detail/pass_container.hpp:136:12: error:                 struct boost::spirit::qi::detail::pass_through_container_base<Container, ValueType, Attribute, Sequence, typename boost::enable_if<boost::spirit::traits::is_container<T2> >::type>
     struct pass_through_container_base<
            ^
/usr/include/boost/spirit/home/qi/detail/pass_container.hpp:172:12: error: invalid use of incomplete type ‘struct boost::spirit::qi::detail::pass_through_container_base<std::vector<wc3lib::Vertex3d<float> >, wc3lib::Vertex3d<float>, wc3lib::Vertex3d<float>, mpl_::bool_<false>, void>’
     struct pass_through_container
            ^
/usr/include/boost/spirit/home/qi/detail/pass_container.hpp:50:12: error: declaration of ‘struct boost::spirit::qi::detail::pass_through_container_base<std::vector<wc3lib::Vertex3d<float> >, wc3lib::Vertex3d<float>, wc3lib::Vertex3d<float>, mpl_::bool_<false>, void>’
     struct pass_through_container_base
Run Code Online (Sandbox Code Playgroud)

以下代码用于语法:

qi::rule<Iterator, long32(), …
Run Code Online (Sandbox Code Playgroud)

c++ boost-spirit

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