在我看来,我在升级库中看到了一些奇怪的事情,它最终正是我现在正在尝试做的事情.虽然找不到它......
我想创建一个接受签名并将其转换为函数指针的宏:
void f(int,int) {}
...
void (*x)(int,int) = WHAT( (f(int,int)) );
x(2,4); // calls f()
Run Code Online (Sandbox Code Playgroud)
我特别需要这个来处理成员函数指针,以便WHAT需要两个参数:
WHAT(ClassType, (f(int,int)); // results in static_cast<void (ClassType::*)(int,int)>(&ClassType::f)
Run Code Online (Sandbox Code Playgroud)
这不是绝对必要的,以解决我的问题,但它会使事情变得更好.
这个问题本身与函数指针没什么关系.需要做的是使用预处理器来获取"f(int,int)"并将其转换为两个不同的部分:
'f''(int,int)'
为什么:
我已经解决了这里提出的问题:实用地生成Qt Q_OBJECT类
我开始解释如何做到这一点的一系列文章: http://crazyeddiecpp.blogspot.com/2011/01/quest-for-sane-signals-in-qt-step-1.html HTTP:// crazyeddiecpp .blogspot.com/2011/01 /追求换理智信号-在-QT步2.HTML
签名必须从用户尝试连接的"信号"进行评估,并准确匹配.Qt用户习惯于表达这一点SIGNAL(fun(param,param)),所以connect_static(SIGINFO(object,fun(param,param)), [](int,int){})不会觉得太奇怪.
为了构造签名,我需要能够将其从提供的参数中拉出来.有足够的信息来获取成员函数地址(使用C++ 0x的decltype)并获取签名以生成适当的包装器,但我看不出如何将其取出.我能想出的最接近的是SIGINFO(object, fun, (param,param)),这可能已经足够好了,但我想在考虑不可能获得我更喜欢的确切语法之前我会问这里.
这是一个菜鸟问题.我正在尝试学习如何使用SWIG为C++库创建python接口.该图书馆是专有的第三方图书馆; 它以头文件(foo.h)和静态存档(libfoo.a)的形式出现在我面前.
为了简化问题,我已经制作了一个我认为具有相同病理的例子.反正相同的错误消息.
/* foo.hpp */
class TC {
public:
TC();
int i;
private:
};
Run Code Online (Sandbox Code Playgroud)
作为参考,这里是foo.c. 我只有真正的第三方库的头文件和存档文件.
/*foo.cxx */
#include "foo.hpp"
TC::TC() {
i = 0;
}
Run Code Online (Sandbox Code Playgroud)
我通过打字创建了这个库 g++ -c foo.cxx && ar rcs libfoo.a foo.o
我的SWIG接口文件如下:
/* foo.i */
%module foo
%{
#include "foo.hpp"
%}
%include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)
我输入生成foo_wrap.cxx
swig -python -c++ foo.i
Run Code Online (Sandbox Code Playgroud)
然后编译.
g++ -c -fPIC -I/usr/include/python2.6 foo_wrap.cxx
g++ -shared -L. -lfoo -lpython2.6 -Wl,-soname,_foo.so foo_wrap.o -o _foo.so
Run Code Online (Sandbox Code Playgroud)
编译成功,但是当我运行Python时import foo,我得到一个未定义的符号错误.
>>> import foo
Traceback (most recent call last): …Run Code Online (Sandbox Code Playgroud) 谷歌和这里似乎已经讨论过这个问题,但我还没有找到解决方案.
一个非常简单的fopen给了我一个
PHP警告:fopen(http://www.google.ca):无法打开流:HTTP请求失败!".
我提取的网址并不重要,因为即使我提取http://www.google.com它也不起作用.完全相同的脚本适用于不同的服务器.失败的是Ubuntu 10.04和PHP 5.3.2.这在我的脚本中不是问题,它在我的服务器中有所不同,或者它可能是PHP中的错误.
我尝试在php.ini中使用user_agent但没有成功.我的allow_url_fopen设置为On.
如果您有任何想法,请随意!
我有一个应用程序,在Qt4中广泛使用了graphicsview架构,我想开始自动测试ui组件,但我找不到任何与我应该测试的内容相关的资源或如何测试基于qgraphicsview/qgraphicswidget的类?
我有一个脚本,我在其中添加所有新文件,然后使用以下行将我的工作副本提交到我的存储库:
svn status | grep ^\? | awk '{print $2}' | xargs svn add
Run Code Online (Sandbox Code Playgroud)
我现在想添加一行从存储库中删除我工作副本中的所有已删除文件.换句话说,我不能逐个指定它们,我需要用svn状态检测它们然后自动删除它们.但是这条线不起作用.
svn status | grep ^\! | awk '{print $2}' | xargs svn --force delete
Run Code Online (Sandbox Code Playgroud)
如你所见,我已经取代了
" ?"与" !"和
" add"与" --force delete"
你能告诉我它为什么不起作用吗?
PS.我知道这是一个危险的程序.我已经讨论了所有这些.谢谢
谢谢
我想使用RESTful控制器删除多个相同类型的对象.
我能想到的最简单的事情是让destroy动作期望以逗号分隔的对象id列表来销毁.
有没有更优雅的方式来做到这一点?
假设我通过http://www.mypage.com/test.aspx访问了一个远程页面.在那个页面上,我使用代码Request.ServerVariables ["HTTP_HOST"].ToString().是否有可能当我访问该页面时,代码可以返回一个不同于我在网址栏http://www.mypage.com/test.aspx中看到的网址?任何帮助,将不胜感激.谢谢.
我目前有一个ASP.Net/C#系统,允许用户动态创建/导出(PDF)数据库中员工的Telerik报告.用户可以选择从员工列表中选择要导出,也可以选择全部导出.
Telerik Report Viewer当前有一个指定的"打印"按钮,但我想让用户在选择时打印多个报告,或者单击"打印所有报告"按钮.
有没有办法逐步打印多个动态Telerik报告?(如果可能的话,给出打印预览?)
我使用emacs作为我的选择编辑器,因为我在终端中做了很多工作,所以我总是运行emacs作为
emacs -nw
Run Code Online (Sandbox Code Playgroud)
这样它就可以在终端而不是在窗口中运行.
我想运行emacs并让它知道它应该在终端中运行.我的问题是 - 如何编辑我的.emacs文件,这是默认行为?
我希望能够构建一个Web项目而不是它的依赖项,因为我知道自上次构建以来我没有修改过任何依赖项.我希望尽可能减少构建时间.有没有办法做到这一点?