Erlang与C语言的头文件对比

ErlangC语言的头文件对比

Erlang中头文件的定义:

record.hrl:

%% this is a record.hrl (header) file. 

-ifndef(record).

  -define(record,true).

-record(person, {name,               

type=industrial, 

hobbies, 

details=[]}).

-endif.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

test.erl:

%%

%% Exported Functions

%%

-include("record.hrl").

-export([getName/1]).

%%

%% API Functions

%%

getName(Name->

Person = #person{name=Name, hobbies=["Crushing people","petting cats"]},

Person#person.name.

=================================================================

c语言中头文件:

person.h

#ifndef PERSON_H

#define PERSON_H

typedef struct Person{

char name[20];

char type[20];

char hobbies[20];

char details[20];

} Person;

#endif

###############################################################################

test.c

#include<stdio.h>

#include "person.h"

int main(void

{

char c;

Person p = {"li""type""hobbies""detail"};

printf("%s",p.name);

scanf("%c", &c);

}

上面的例子是在头文件定义了一个记录或者结构体,然后在源程序中引用了这个记录或者结构体。

为了看懂上面的例子我做几点对比说明:

预处理对比

C

Erlang

包含

#include<""> #include""

不能是路径

-include(File) File可以是绝对和相对路径

#define 分为有参和无参

引用时,直接引用

-define(Const, Replacement), -define(Func(Var1, VarN), Replacement),引用时用?Const ?Func(Var2,  VarN)

条件编译

#ifdef #else #endif

-ifdef(Macro) -ifndef(Macro) -else -endif.

看出ErlangC语言的预处理还是很相似的,最大的不同在于#-, 其它在用法上有些小的区别,多注意下就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值