| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10752 人关注过本帖
标题:如何声明宏定义的函数?
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
 问题点数:0 回复次数:4 
如何声明宏定义的函数?
在 .c 文件中定义了
#define CTOR(type)              \
void type##Setting()            \
{                               \
    printf("%s\n","sss");       \
}
然后在.h文件中声明为
#define CTOR(type)  \
void type##Setting();

然后主函数中使用

//  SQLSrvr: CREATE TABLE emp3 (NAME char(30), AGE int,
//           BIRTHDAY datetime, Memo1 text)

#include <stdio.h>
#include <string.h>

#include "dd.h"

extern \
CTOR(type)

extern void typeSetting();

int main()
{
   typeSetting();

   return(0);
}
一直提示
error LNK2001: unresolved external symbol _typeSetting
难道.c中定义的 typeSetting 函数无效吗 ?
搜索更多相关主题的帖子: 声明 定义 函数 
2009-09-16 16:33
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
而主函数demo.c中使用
#include <stdio.h>
#include <string.h>

#include "dd.c"

extern \
CTOR(type)

extern void typeSetting();

int main()
{
   typeSetting();

   return(0);
}就一切正常!难道宏定义和实现必须在一个文件中吗 ?(VC6)

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-09-16 16:35
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
搞定
dd.c 中
#include <stdio.h>


#define CTOR(type)              \
void type##Setting()            \
{                               \
    printf("%s\n","sss");       \
}

CTOR(type);
dd.h 中
#define CTOR(type)  \
void type##Setting();
然后主函数 demo.c中
#include "dd.h"

extern CTOR(type)

int main()
{
   typeSetting();

   return(0);
}

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-09-16 16:53
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:0 
定义函数体那部分不要在前面带#define什么的,就正常定义函数

然后头文件里面先写一个该函数的原型,在下面用#define定义一下对该函数调用的过程

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2009-09-16 17:39
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
小结
以下是引用vfdff在2009-9-16 16:53:21的发言:

dd.c 中
#include


#define CTOR(type)              \
void type##Setting()            \
{                               \
    printf("%s\n","sss");       \
}

CTOR(type);
dd.h 中
#define CTOR(type)  \
void type##Setting();
然后主函数 demo.c中
#include "dd.h"

extern CTOR(type)

int main()
{
   typeSetting();

   return(0);
}
#define CTOR(type)              \
void type##Setting()            \
{                               \
    printf("%s\n","sss");       \
}
仅仅是一个宏定义描述

只有在.c文件中使用了
CTOR(type);

才会真正对红定义体进行展开,得到函数typeSetting()的定义

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-04 02:01
快速回复:如何声明宏定义的函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015417 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved