易截截图软件、单文件、免安装、纯绿色、仅160KB

Fortran & C 混编

C 调用 Fortran
c2ffn.f
      SUBROUTINE NAMEAGE(NAME, NLEN, AGE, TEMP)
      CHARACTER*(*) NAME
      INTEGER NLEN,AGE
      REAL TEMP
C
      WRITE(6,1000) NAME(1:NLEN),AGE,TEMP
 1000 FORMAT(1X,'Hello ',A,', who is ',I2,
     .       ' years old, has a temperature of ', f4.1)
      RETURN
      END
c2f.c
#include <string.h>
#ifdef _CRAY
# include <fortran.h>
#  define nameage       NAMEAGE
#else
#  if !defined(_AIX) && !defined(__hpux)
#    define nameage     nameage_
#  endif
#  define _fcd          char *
#  define _cptofcd(a, b)   (a)
#  define _fcdlen(a)    strlen(a)
#endif
void nameage(_fcd name, int *nlen, int *age, float *temp);
int main()
{
    char *name = "Knut";
    _fcd fp;
    int nlen, age = 4;
    float temp = 98.6;
    nlen = strlen(name);
    fp = _cptofcd(name, nlen);
    nameage(fp, &nlen, &age, &temp);
    system("pause");
    return 0;
}
Makefile
f77 = g77
 
#
tar = demo
 
#
src = c2f.c
 
#
srcf = c2ffn.f  
 
#
obj = $(src:.c=.o)
 
objf = $(srcf:.f=.o)
 
 
${tar} : ${obj} ${objf}
    ${f77} -o ${tar}  ${objf} ${obj} 
 
${obj} : ${src}
    ${CC} -c ${src} -o ${obj}
 
${objf} : ${srcf}
    ${f77} -c ${srcf} -o ${objf}
clean:
    rm -f  *.o
Fortran 调用 C
#include <string.h>
#ifdef _CRA


相关文档:

C/S 与 B/S 的区别


 C/S 与 B/S 
1.硬件环境不同: 
  C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
  B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行&n ......

我的C实践(7):位计数

  位计数就是对一个数中具有某些特征的位进行计数。看下面实现:
/* bitscount.c:位计数 */
/* 计算x中1位的数目:方案1,采用分治策略 */
inline int pop(unsigned x){
/* 对每个2位字段,先析出其右端的1位,再析出其左端的1位,然后让这两个位相加 */
x=(x & 0x55555555)+((x>>1) & 0x555555 ......

C字符串反转算法

一个很简洁的算法:
void Reverse(char s[])
{
    for(int i = 0, j = strlen(s) - 1; i < j; ++i, --j) {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
 & ......

构建自己的C/C++插件开发框架

——初步设想
 最近一直在学习OSGI方面的知识。买了一本《OSGI原理和最佳实践》,可是还没有到。遗憾的是,OSGI目前的几个开源框架只支持Java,对C和C++都不支持的。可惜我们公司目前主要的开发语言还是c和c++,即便是引进OSGI,所得的好处范围有限。而我对松散耦合的模块化开发向往已久。查了一下OSGI对C++支 ......

读《C和指针》笔记摘要【5】

2010-04-09
第十四章   预处理器
1、#define 替换
在程序中扩展#define定义符号和宏时,需要涉及几个步骤;
①、在调用宏时,首先对参数进行检查,看看是否包含了任何由#define定义的符号,如果是,它们首先被替换;
②、替换文件随后被插入到程序中原来文件的位置,对于宏,参数名被他们的值替代;
③、最 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号