我想为了记录调用而覆盖对各种API的某些函数调用,但我也可能希望在将数据发送到实际函数之前对其进行操作.
例如,假设我getObjectName在源代码中使用了一个名为数千次的函数.我想暂时覆盖此函数,因为我想更改此函数的行为以查看不同的结果.
我创建了一个像这样的新源文件:
#include <apiheader.h>
const char *getObjectName (object *anObject)
{
if (anObject == NULL)
return "(null)";
else
return "name should be here";
}
Run Code Online (Sandbox Code Playgroud)
我像往常一样编译所有其他源代码,但是在链接API的库之前我首先将它链接到此函数.这工作正常,但我显然不能在我的重写函数中调用真正的函数.
是否有一种更简单的方法来"覆盖"一个函数而不会链接/编译错误/警告?理想情况下,我希望能够通过编译和链接一个或多个额外的文件来覆盖该函数,而不是通过链接选项或改变我的程序的实际源代码.
我有大约30个可变函数.每个人都接受一个路径作为最终参数,例如:
bool do_foo(struct *f, int q, const char *fmt, ...)
Run Code Online (Sandbox Code Playgroud)
在每个函数中,我必须检查扩展格式是否小于或等于特定大小.所以,我发现自己复制/粘贴相同的代码块来检查vsnprintf()没有打印多少个字符,相应地设置并保留errno写入.
我想要做的是编写一个函数来执行此操作,这将返回一个已知为安全大小的静态分配(扩展)字符串,或者在失败时新初始化的字符串,可以针对NULL进行检查.检查还必须确定字符串是绝对路径还是相对路径,这会影响字符串的安全大小.这是很多重复的代码,它开始闻起来.
有没有办法可以将elipsis的内容从我的函数的条目传递给另一个函数?或者我必须先调用va_start(),然后传递va_list给辅助函数?
编辑:
我完全不反对把它传递va_list给帮助者,我只是想确保没有别的东西存在.在我看来,编译器理解可变参数的开始位置,所以我只是好奇我是否可以告诉它传递它们.
我正在使用LG-P500.当我尝试在"Android设备选择器"中选择它时,Eclipse识别手机但不识别目标.它说目标"未知".由于这个问题,我无法选择手机作为Android设备.
如何让Eclipse识别目标?
我有一个CentOS 5.7 linux服务器并使用php5.3.x.
在pfSense系统上,您可以使用php网页重新启动需要root权限的服务.
我正在尝试做类似的事情,我已经写了一些PHP代码来执行shell命令.例如,要重新启动sshd服务:
<?php
exec('/sbin/service sshd restart');
?>
Run Code Online (Sandbox Code Playgroud)
我尝试通过exec函数执行该命令,但它需要root权限,但我们有一个apache用户权限.
我遇到了一些解决方案:
还有其他方法吗?谢谢你的回答.
现在..这很有趣.我试过@refp post,它工作了我的本地ubuntu服务器.但是当我在我的cenOS vps服务器上尝试相同时.它不起作用.这是apache的错误日志"rm:无法删除`/ var/lock/subsys/vsftpd':权限被拒绝"
我正在使用ASP .NET MVC Beta,当我使用这个最后有一个"点"的url时,我得到HTTP 404(无法找到资源)错误:
http:// localhost:81/Title/Edit/Code1.
如果我在末尾删除点或点在中间某处我没有得到错误.
我尝试调试,但它在MvcHandler中的ProcessRequest之前从"System.Web.CachedPathData.GetConfigPathData(String configPath)"得到错误.
网址末尾不允许使用"点"吗?或者有没有办法修复路由定义来处理这个URL?
举个例子:我有一个名为Detail1 [Id(整数),Code(string),Description(string)]的表,它与Master1通过它的Id列有FK关系.每当我选择Master1的记录时,我也会选择它的Detail1记录来获取它的Code字段.为了不每次都进行这种连接(因为通常不仅有一个细节,还有不止一个)我选择不使用Id列,而是制作Detail1的Code PK.
但是当我摆脱Id并使用Code作为PK时,我的路由也开始使用Code字段,如:Detail1\Edit\Code1
本规范可以包含任何内容或最终内容,包括DOT.在某些情况下,我可以在最后禁止DOT,但有时它确实很有意义.
而且我也看到这篇帖子说路线非常灵活,所以我觉得我的路线不那么奇怪.
所以这就是为什么我做一些非标准的事情.有什么建议?
还有为什么在网址末尾有一个DOT是如此奇怪?
在最近的一次代码审查中,我在一个类中发现了几行重复逻辑(少于15行).当我建议作者重构代码时,他认为代码更容易理解.在再次阅读代码后,我不得不同意提取重复的逻辑会稍微损害可读性.
我知道DRY是指南,而不是绝对的规则.但总的来说,你是否愿意以DRY的名义伤害可读性?
我正在努力了解功能memalign()和功能posix_memalign().阅读可用的文档没有帮助.
有人可以帮助我理解它是如何工作的以及它用于什么?或者,也许提供一个用法示例?
我试图了解linux内存是如何工作的,我需要编写自己的简单内存池(低碎片堆).
假设我的页面中有一个链接,我希望当我将鼠标放在链接上时,将根据鼠标x,y显示div.
我怎样才能使用jQuery实现这一目标?
c ×5
.net ×1
android ×1
apache ×1
asp.net-mvc ×1
autoconf ×1
autotools ×1
coding-style ×1
dry ×1
eclipse ×1
function ×1
java ×1
jquery ×1
linker ×1
memory ×1
memory-pool ×1
overriding ×1
permissions ×1
php ×1
refactoring ×1
root ×1
routes ×1
routing ×1