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语言的预处理还是很相似的,最大的不同在于#-, 其它在用法上有些小的区别,多注意下就好了。

你可能感兴趣的:(c,erlang,File,header,语言)