分类软件编程下的文章

fz 发布于 02月25, 2018

C与C++中函数的互相调用

考虑两种情况:一是在C++中调用C的函数,二是在C中调用C++的函数。 首先要确定一个问题,在这里我们的C文件使用gcc编译,CPP文件使用g++编译。假设如果我们都采用g++编译的话,这意味着所有函数调用格式都是CPP的,也就不存在C和CPP的区别了。 对于这种调用问题,我们知道一般是使用extern关键字来解决,下面就来讲解它的具体用法。首先要说明一下是,extern关键字是用来声明而不是定义...

阅读全文 »

fz 发布于 01月10, 2018

extern char *s与extern char s[]的区别

首先,C在语言中,指针和数组是完全不同的两个东西。我们先把这两个概念的固有想法完全抛弃。考虑C中是不能将数组作为参数传递的,因此当我们使用到数组名,编译器会自动转化成数组中首元素的地址进行传递,也就是arr这个名字等价于&arr[0]。不过,数组名这个东西比较特殊,它也是可以取地址的。我们可以这样理解:数组名是“数组”这种变量的变量名,当直接用这个变量名的时候,我们拿到的是它的首地址,当对...

阅读全文 »

fz 发布于 11月30, 2017

使用vbs自动连接VPN

现有需求:保持VPN一直在线,当VPN断开连接的时候能够自动连接,以及开机自动连接。 为了方便起见,我们采用vbs进行代码编写。 我们首先在系统中添加好VPN,然后编辑如下代码,命名为DialVpnAutomatically.vbs。将其加入任务计划,在系统开机时、登录前运行,即可使得VPN保持连接。 Set ws = CreateObject("Wscript.Shell") do while...

阅读全文 »

fz 发布于 11月08, 2017

在VS 2017中配置OpenCV

对于Windows平台,我们可以直接下载预编译好的OpenCV,省得花费几个小时去编译它了。 首先在OpenCV官网下载,对于Windows,我们要下载Win pack,具体来说,我下载了3.3.1版本的opencv-3.3.1-vc14.exe。下载之后是个7zip自解压exe,假设我们解压到了VS工程文件的上一层的opencv目录下(相对于sln文件是上一层,但相对于vcxproj是上上层),...

阅读全文 »

fz 发布于 09月07, 2017

Matlab读取grib文件

首先下载read_grib。 执行mex -setup查看是否有C编译器。 使用如下代码即可读取grib的文件结构,接着读取数据即可。 mex BDS_unpack_mex5.c grib_struct=read_grib('global_soiltype.1x1.grb','invent') ...

阅读全文 »

fz 发布于 08月11, 2017

编写并行程序时遇到的段错误

我在使用ifort、intel mpi编写并行程序运行时遇到了APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)。 首先我们看到Segmentation fault,是段错误,一般来说错误原因都在于数组越界。经我对程序的仔细检查,发现可能是栈空间不够用了,溢出了。 使用ulimit -s可以查看系统...

阅读全文 »

fz 发布于 08月10, 2017

ncl删除坐标变量和属性

使用ncl画图的时候,遇到错误gsn_add_cyclic: Warning: The range of your longitude data is not 360. 仔细检查之后,发现并不是字面上出错的原因,而是画图时一个变量同时绑定了lat/lon和lat2d/lon2d。由于我想用lat2d/lon2d却不想用lat/lon,但它默认使用的是lat/lon,这就需要我将lat/lon删除。...

阅读全文 »

fz 发布于 05月03, 2016

程序编译时头文件、链接库文件目录的一些问题

这是一篇从主博客转移而来的文章。本文本来是写在Ubuntu 14.04 LTS下配置MPICH、NetCDF、ifort环境这篇文章中的,后来考虑到篇幅太长,因此单独把它拿出来了。以*nix为例,程序编译时,经常会使用到-I、-L、-l这三个参数,举例如下:-I/home/fz/mpich/include-L/usr/local/lib-lmpi-I+路径表示编译该程序时第一个寻找头文件的目录,之...

阅读全文 »

fz 发布于 07月27, 2015

深入解析操作系统中的换行符

这是一篇从主博客转移而来的文章。我们知道在Windows, Unix/Linux, Macintosh上的换行符是各不相同的。在Windows中使用CRLF表示换行,而Unix/Linux是LF,Macintosh是CR。CR的值是0x0D,通常使用\r表示,LF的值是0x0A,通常使用\n表示。也就是说,Win中的换行使用\r\n,*nix使用\n,Mac使用\r。通常,\r叫做回车,\n叫做换...

阅读全文 »

fz 发布于 05月02, 2015

现在的js越来越强大了

注意:这是一篇从旧博客恢复的文章。 原地址:http://freemeepo.com/blog/archives/222 今天看到一则新闻:Twitter消息可嵌入互动式DOS游戏了:你要和小伙伴搓一局么? 根据传送门,发现它是在Web上跑的DOSBox。 因为DOSBox本身是跨平台的,所以不难理解Web上的DOSBox。不过它是怎么实现的呢? 在github上找到了em-dosbox这个...

阅读全文 »