游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2259|回复: 3

define和函数定义问题!

[复制链接]

22

主题

40

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2008-3-2 20:01:00 | 显示全部楼层 |阅读模式
有时候看别人源代码时会看到这样的:

#define _FrameSwizzleBlock(type, transfer, transfer16, incsrc) \  
/* FrameSwizzleBlock32 */ \  
void FASTCALL(FrameSwizzleBlock32##type##c(u32* dst, u32* src, int srcpitch,u32 WriteMask)) \
{ \  

或者
#define MOTION_FUNCTIONS(FORMAT,MOTION,MOTION_FIELD,MOTION_DMV,MOTION_ZERO)\
static void motion_fr_frame_##FORMAT (mpeg2_decoder_t * const decoder, \   
motion_t * const motion,\  
mpeg2_mc_fct * const * const table)  \  
{ \  


define和函数定义有什么关系?

那个##起什么作用??

       

4

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2008-3-3 02:06:00 | 显示全部楼层

Re:define和函数定义问题!

我原版引用《Windows程式设计》里的解释如下:

#define __T(x) L##x
这是相当晦涩的语法,但合乎ANSI C标准的前置处理器规范。那一对井字号称为「粘贴符号(token paste)」,它将字母L添加到巨集引数上。因此,如果巨集引数是"Hello!",则L##x就是L"Hello!"。

楼主应该能理解了吧。

我觉得这段define貌似是用C来实现函数重载的思想

2

主题

683

帖子

687

积分

高级会员

Rank: 4

积分
687
发表于 2008-3-3 09:27:00 | 显示全部楼层

Re:define和函数定义问题!

靠!预定义被你们解释成这样.真恶心!

2

主题

30

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2008-3-4 21:16:00 | 显示全部楼层

Re:define和函数定义问题!

c的预处理指令,进行两个参数的连接

#include <iostream>
using namespace std;
#define  connect(x,y) x##y

void main()
{
        int xy = 10;
        cout << "xy=" << connect(x,y) << endl;
}

输出就是:xy=10;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 07:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表