linux续行符号,[转载]#define定义的函数和 \ 续行符的用法

如果是C++,好多人建议用内敛

#include

#define add(a,b) (a+b)

int main()

{

int x=7 ,y=5,z ;

z=add(x,y);

printf("%d n", z);

return 1;

}

#define

定义的函数

#define的 续行符的用法

typedef unsigned

char uint8_t;

#include

#include

#define PIXEL_SAD_C( name, lx, ly )

static int name( uint8_t *pix1, int i_stride_pix1,

uint8_t *pix2, int i_stride_pix2 )

{

int i_sum = 0;

int x, y;

for( y = 0; y < ly; y++ )

{

for( x = 0; x < lx; x++ )

{

i_sum += abs( pix1[x] - pix2[x] );

}

pix1 += i_stride_pix1;

pix2 += i_stride_pix2;

}

return i_sum;

}

PIXEL_SAD_C( x264_pixel_sad_16x16, 8, 8

)

int main()

{

unsigned char sum;

uint8_t pix1[]={1,4,12,54, 65,7,8,10};

uint8_t pix2[]={1,4,12,54, 65,7,8,10};

sum= x264_pixel_sad_16x16(pix1,8, pix2, 8 );

printf("%dn",sum);

return 1;

}

//static int name(uint8_t *pix1, int i_stride_pix1, uint8_t

*pix2, int i_stride_pix2)函数原型

//sum= x264_pixel_sad_16x16(pix1,pix2, 16, 16 );

函数调用 lx ly是#define传去的参数

表示强制换行,而换行后的内容与前一行的内容编译器仍把它看作是同一行.

#define后面定义的内容比须在同一行,而有时是为了让程序便于阅读,从中间进行换行,如果没有符号'',则我们的换行表示

#define的结束,这也是为什么你去掉后会报错的原因.如果在这里加了'',也可以说是对"回车"的转义,表示这里有一个回车字符而已,#define并没有结束.而程序编译的时候,编译器会忽略掉这些'回车'的字符.

讲得不好,表达能力不强呵呵,但仍希望你能了解.如果你会用LINUX系统的话,你用命令行中输入 ls 回车

,系统也不会执行ls这个命令.它会认为你命令仍没有输完,会继续等待用户的输入.

是什么作用:续行符:表示在一行中。因为宏只能在一行中定义 关键是要在每一个换行的时候加上一个""

下面是程序去掉反划线,为了好理解:

#define PIXEL_SAD_C( name, lx, ly )

static int name( uint8_t *pix1, int

i_stride_pix1, uint8_t *pix2, int i_stride_pix2

)

{

int i_sum = 0;

int x, y;

for( y = 0; y < ly; y++ )

{

for( x = 0; x < lx; x++ )

{

i_sum += abs( pix1[x] - pix2[x] );

}

pix1 += i_stride_pix1;

pix2 += i_stride_pix2;

}

return i_sum;

}

PIXEL_SAD_C(

x264_pixel_sad_16x16, 8, 8 )

程序为什么要用宏定义这样写,就可能是可时用多个函数,而这几个函数只有几个参数不同,x264中的一段代码如下得到证明:#define

PIXEL_SAD_C( name, lx, ly )

static int name( uint8_t *pix1, int

i_stride_pix1, uint8_t *pix2, int i_stride_pix2 )

{ int i_sum =

0; int x,

y; for( y = 0;

y < ly; y++

) { for( x = 0; x < lx; x++

)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值