Monthly Archives: December 2010

函数指针传递变长参数的问题

一个例子,编译不通过。

//test.h

#include <cstdarg>

class Test
{
public:
  // int A();
   int B(int a1,int(*Func)(int b1,va_list ap),…);
  int C(int b1,va_list ap);
};

//test.cpp

#include “test.h”

int Test::B(int a1,int(*Func)(int b1,va_list ap),…)
{
    va_list ap;
  va_start(ap,Func);
  int f=Func(a1,ap);
  va_end(ap);
  return f;
}
int Test::C(int b1,va_list ap)
{
int a=(int)va_arg(ap,int);
int b=(int)va_arg(ap,int);
int c=(int)va_arg(ap,int);
return a+b+c;
}

//main.cpp

#include <iostream>
#include <test.h>

int main()
{
  Test t;
// std::cout<<t.A()<<std::endl;

  std::cout<<t.B(3,t.C,4,5,6)<<std::endl;

  return 0;
}

编译提示Unresolved overloaded type 之类的错误。

解决方法:

int C(int b1,va_list ap); 必须声明为 static

得到预期结果。


 

Outlook 2007最近更新问题

这两天总感觉Outlook 2007变得很慢,打开文件夹比较费劲。检索了一下Google,看到一则新闻,意思是Outlook 2007的最近一个更新(KB2412171)导致这个问题。

来自微软的帖子在这里:http://blogs.msdn.com/b/outlook/archive/2010/12/17/issues-with-the-recent-update-for-outlook-2007.aspx

大致说这个更新会导致三个问题:

§ Outook无法连接,如果帐户配置为安全密码验证(SPA)而邮件服务器不支持SPA的话;

§ 如果不使用Microsoft Excahnge Server的帐号,在切换Outlook文件夹的时候会感觉到性能下降;

§ 如果不使用Microsoft Exchange Server帐号,自动存档可能不能使用。

解决方法是将KB2412171更新删除。

进去控制面板>程序>程序和功能>已安装更新,对此更新卸载。

卸载完成后,一切恢复正常。

Windows 7 多用户模式下安装AVSWAT 2005

1. 安装 arcview 3.2,安装完后,不要重启,打开arcview 3.2,键入注册码
2. 安装spatial analyst 2.0,安装完后,不要重启
3. 打开控制面板,将区域与语言里的格式,从中国改成 英语(美国),位置处的中国
可以不改。
4. 安装arcview, SA 都请安装在默认目录下,即不包括空格
5. 将avswatx的安装包解压缩到 c:esri 目录下的avswatx里。
6. 用管理员权限(重要!)打开arcview 3.2,打开 c:esriavswatx下的
setup.apr,将开始avswatx的安装。
7. 选择 for all users,在我安装时,选 only for me ,安装可以,但在装载swat的
时候提示注册表的 avswatx/swatdatabase等找不到。
7.1 重启,否则在使用arcview时可能提示 ntfont.c 错误等。
8. 以当前用户权限打开 arcview 3.2,在extensions里选择 avswatx extendable 和 spatial analyst 扩展。
9. 可以正常运行了。

一点感慨

一个学生过去找我一个同事请教问题,同事说,你们为什么还做这个,怎么做也超不出外国人的水平,他们的结果都已经发在SCI上了

几个疑惑:(1)发在SCI的就是对的了? 做科学必须要有怀疑精神不是?(2)为什么就一定超不出外国人的水平呢?尽管咱们现在水平不成,但也不能妄自菲薄。怪不得大家都喜欢搞一些浅的容易写文章的东西,结果论文数量不少,国际上根本没人理会。