小编The*_*dis的帖子

最小化boost :: spirit编译时间

任何减少boost :: spirit编译时间的想法?

我刚刚将flex解析器移植到boost :: spirit.EBNF有大约25条规则.

结果运行良好,运行时性能良好.

问题是编译需要永远!它需要大约十分钟,并且需要几乎一千兆字节的内存.原始的flex解析器在几秒钟内编译完成.

我正在使用boost版本1.44.0和Visual Studio 2008.


在Joel de Guzman的文章"最佳实践"中,它说

具有复杂定义的规则严重损害了编译器.我们已经看到超过一百行的规则,需要花费几分钟来编译

好吧,我没有接近那么久,但我的编译仍然需要超过几分钟

这是我语法中最复杂的部分.它是以某种方式分解成较小部分的候选者吗?

    rule
        =   (   tok.if_ >> condition  >> tok.then_ >> *sequel  )                            [ bind( &cRuleKit::AddRule, &myRulekit ) ]
        |   (   tok.if_ >> condition  >> tok.and_ >> condition >> tok.then_ >> *sequel  )   [ bind( &cRuleKit::AddRule, &myRulekit ) ]
        ;

    condition
        =   ( tok.identifier >> tok.oper_ >> tok.value )                                    [ bind( &cRuleKit::AddCondition, &myRulekit, _pass, _1, _2, _3 ) ]
        |   ( tok.identifier >> …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-spirit

27
推荐指数
2
解决办法
3619
查看次数

谷歌协议缓冲比较

我想比较Google协议缓冲区的两个消息或(两个子参数).我没有找到实现它的API.

有任何想法吗?

c++ protocol-buffers

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

使用libjpeg-turbo的TurboJPEG的示例或教程

libjpeg-turbo的说明在描述了TurboJPEG API:"此API包装了libjpeg-turbo,并提供了一个易于使用的界面,用于压缩和解压缩内存中的JPEG图像".很好,但有一些使用此API的可靠实例吗?只是想在内存中解压缩一个相当香草的jpeg.

我找到了一些比如https://github.com/erlyvideo/jpeg/blob/master/c_src/jpeg.c,它似乎使用的是TurboJPEG API,但还有更多可靠/多变的例子吗?

libjpeg-turbo的来源已有详细记录,因此确实有帮助.

c c++ jpeg libjpeg-turbo turbojpeg

26
推荐指数
3
解决办法
3万
查看次数

在编译时使用boost :: split进行警告

可能重复:
为什么调用boost:split()会发出这么多警告?

所以,这是我的代码:

Account ParseString(string data){
    vector <string> fields;
    boost::split( fields, data, boost::is_any_of( "a,;" ));
    int limit = fields.size();
    for(int i = 0; i < limit; i++)
        cout << fields[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

这是我在尝试编译时得到的:

d:\program files (x86)\visualstudio\vc\include\xutility(2227): warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
Run Code Online (Sandbox Code Playgroud)

我的问题是,我做错了什么?我该怎么做才能防止这些错误消息?

c++ boost visual-studio-2010

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

QProcess启动的嵌套远程进程仍然是僵尸

我正在我的日志服务器上拖尾日志以在窗口中显示它们中的任何一个,但是当我关闭我的应用程序时,远程尾部进程在服务器上保持活动状态.

重复会产生大量的僵尸进程.

process_log_watcher_->start(QString(
      "ssh -t %1 \"tail -F -n 0 /var/log/logfile.log\"").arg(log_server_));
Run Code Online (Sandbox Code Playgroud)

在控制台中,该ssh -t选项处理终端的退出; 我想重现那种行为.

在我打电话的析构函数中process_log_watcher_->close();,但它似乎没有帮助.它与使用已ssh -t server "tail -F -n 0 /var/log/logfile.log"启动的关闭控制台窗口的行为不同.

可能是QProcess没有终止ssh会话吗?

c++ linux ssh qt4

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

从boost ptime获得一年

我正在将现有程序转换为C++,这里需要操作Sybase时间戳.这些时间戳包含日期和时间信息,据我所知,最好由boost::posix_time::ptime变量处理.在代码中的一些地方,我需要从变量中获取年份.

我的问题是:如何从boost ptime变量中最有效地提取年份?下面是其中所花费的示例程序3行代码,用一个额外的开销ostringstream变量和boost::gregorian::date变量.

根据boost文档:

类ptime取决于gregorian::date时间点的日期部分的接口

gregorian::date似乎不是一个基类ptime.不知怎的,我在这里遗漏了一些东西.

难道没有一种更简单的方法从中提取年份ptime

样品:

#include <boost/date_time/local_time/local_time.hpp>
#include <iostream>

int main()
{
   boost::posix_time::ptime t(boost::posix_time::second_clock::local_time());
   boost::gregorian::date d = t.date();
   std::ostringstream os; os << d.year();
   std::cout << os.str() << std::endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-date-time

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

Java中的Cookie最长年龄

这有什么区别:

cookie.setMaxAge(0);
Run Code Online (Sandbox Code Playgroud)

和这个

cookie.setMaxAge(-1);
Run Code Online (Sandbox Code Playgroud)

首先将其删除吗?

java cookies

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

如何使用boost :: asio来抽象文件描述符?

是否有关于如何将Boost :: asio抽象用于多个Linux文件描述符的教程?

我基本上寻找更好的抽象来在单独的线程上选择多个文件描述符,并带有超时.

c++ linux boost boost-asio

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

Paypal IPN没有调用问题

我有一些问题,关于Paypal IPN没有被我的一个服务器解雇.以下是场景.

1)我有两个站点站点A(旧)在服务器X上,站点B(新)在服务器Y上.具有相同Paypal快递结账表单提交和IPN代码的站点.2)网站A运行顺利,PayPal快速结账表单提交,IPN被正确解雇.3)但是对于站点B,虽然我们的表单已正确提交并且付款成功,但IPN并未被解雇.

更多信息:我检查了Paypal的业务A/c,了解添加IPN所在IP /域所需的任何功能.

我还检查了Paypal支持他们说从2014年3月25日起他们已经告诉我们将Paypal的API相关IP地址添加到我们的服务器防火墙.我们已经完成了添加这些IP地址,但仍然无法正常工作.

  URL : https://ppmts.custhelp.com/app/answers/detail/a_id/14/related/1/session/L2F2LzEvdGltZS8xNDAxMTcyODkwL3NpZC9VbENEUWhWbA%3D%3D
Run Code Online (Sandbox Code Playgroud)

希望以下信息对您而言足够.如果我们中的任何一个人有解决方案,请建议.

提前致谢.

php firewall paypal paypal-ipn express-checkout

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

使用libjpeg时未定义的jpeg_CreateDecompress()错误引用

我安装了libjpeg-dev,所有文件都在include文件夹中

/usr/include/jerror.h
/usr/include/jmorecfg.h
/usr/include/jpegint.h
/usr/include/jpeglib.h
/usr/include/turbojpeg.h
/usr/include/x86_64-linux-gnu
/usr/include/x86_64-linux-gnu/jconfig.h
Run Code Online (Sandbox Code Playgroud)

当我尝试这个简单的代码来解压缩jpeg图像时,我得到了标题中的错误.

这是代码:

#include <stdlib.h>
#include <stdio.h>
#include <jpeglib.h>
int main(void){
    struct jpeg_decompress_struct cinfo;
    struct jpeg_error_mgr jerr;
    cinfo.err = jpeg_std_error(&jerr);
    jpeg_create_decompress(&cinfo);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c linux libjpeg

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

std::set 错误:与 »operator&lt;« 不匹配

我有一堂课(摘录):

\n\n
class Package\n{\nprivate:\n        string s_package_name;\n        float f_boottime;\n        float f_bytesize;\n        list <Package> l_depends;\n        list <Package> l_selects;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想生成许多对象并将它们列出在一个唯一的“数组”中,因此我添加了set如下对象:

\n\n
set<Package> l_tempSet;   \nPackage PackageA(1, 11, "what a package");\nPackage PackageB(2, 22, "what a 2nd package");\n\nl_tempSet.insert(PackageA);\nl_tempSet.insert(PackageB);\n
Run Code Online (Sandbox Code Playgroud)\n\n

编译时我收到一条错误消息:

\n\n
\n

与 \xc2\xbboperator<\xc2\xab 不匹配(操作数类型为 \xc2\xbbconst Package\xc2\xab 和 \xc2\xbbconst\n Package\xc2\xab)

\n
\n\n

当单击错误消息时,它会将我指向 set.h 到unique调用的行,我认为这就是错误。

\n\n

C++ 是否真的无法将“唯一”对象(如本示例中所示)放入列表和集合中,并且只能处理简单的数据类型(如 int、float 等)?或者我在某个地方出错了,请帮助我,我不确定错误到底在哪里。

\n\n

感谢您的支持

\n

c++ set c++11

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

Java中的HashSet和TreeSet

Set s = new HashSet();

boolean b[] = new boolean[5];
b[0] = s.add("a");
b[1] = s.add(new Integer(5));
b[2]= s.add("a");
b[3] = s.add(new Object());
b[4] = s.add("4");
for(int i=0;i<b.length;i++){
    System.out.println(b[i]);
}
Run Code Online (Sandbox Code Playgroud)

这给了我预期的输出: -

true
true
false
true
true
Run Code Online (Sandbox Code Playgroud)

但是当我使用Treeset时

Set s = new TreeSet();
Run Code Online (Sandbox Code Playgroud)

它给了我这个例外.

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at com.sunil.questions.TreeSetExample.main(TreeSetExample.java:15)
Run Code Online (Sandbox Code Playgroud)

我想知道为什么它会告诉我这种行为.

java collections

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

如何在C++中将派生对象作为父对象传递?

我正在使用核心OOP模型.我在哪里遇到一些问题.

使用"this"关键字.这是我想要实现的示例代码.

class equation {
// some properties
};
class equationSolver{
 public:
    static void method1(equation eq, double dt);
}
class simpleMotion : public equation{};
class DragProjectile : public simpleMotion{
void updateVariables(double time){
    equationSolver::method1(this, time); // I am getting error cannot convert 
    // "DragProjectile" to "equation"
}
Run Code Online (Sandbox Code Playgroud)

如果你能提供帮助,我会很高兴的.提前致谢

c++ oop inheritance

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