首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中#链接符使用异常有关问题

2013-12-05 
C++中##链接符使用错误问题代码如下,使用msdn的可以编译可输出字符连接的内容,define一个struct却显示找不

C++中##链接符使用错误问题
代码如下,使用msdn的可以编译可输出字符连接的内容,define一个struct却显示找不到,求高手大神帮忙瞧瞧


//msdn example
#define paster( n ) printf_s( "token" #n " = %d\n", token##n )
int token9 = 9;

//struct
#define __KHASH_TYPE(name, khkey_t, khval_t) \
typedef struct { \
khint_t n_buckets, size, n_occupied, upper_bound; \
khint32_t *flags; \
khkey_t *keys; \
khval_t *vals; \
} kh_##name##_t;

//declaration
#define KHASH_DECLARE(name, khkey_t, khval_t) \
__KHASH_TYPE(name, khkey_t, khval_t) \
extern kh_##name##_t *kh_init_##name();

//define
#define KHASH_INIT2(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
__KHASH_TYPE(name, khkey_t, khval_t) \
SCOPE kh_##name##_t *kh_init_##name(void) {\
return (kh_##name##_t*)calloc(1, sizeof(kh_##name##_t));\
}

#define kh_init(name) kh_init_##name()


int _tmain(int argc, _TCHAR* argv[])
{
paster(9);

(void*)kh_init(objmap);

}


输出错误:
1>------ 已启动生成: 项目: testJJ, 配置: Debug Win32 ------
1>  testJJ.cpp
1>e:\workspace\c++\testjj\testjj\testjj.cpp(37): error C3861: “kh_init_objmap”: 找不到标识符
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
[解决办法]
引用:
代码如下,使用msdn的可以编译可输出字符连接的内容,define一个struct却显示找不到,求高手大神帮忙瞧瞧

//msdn example
#define paster( n ) printf_s( "token" #n " = %d\n", token##n )
int token9 = 9;

//struct
#define __KHASH_TYPE(name, khkey_t, khval_t) \
typedef struct { \
khint_t n_buckets, size, n_occupied, upper_bound; \
khint32_t *flags; \
khkey_t *keys; \
khval_t *vals; \
} kh_##name##_t;

//declaration
#define KHASH_DECLARE(name, khkey_t, khval_t) \
__KHASH_TYPE(name, khkey_t, khval_t) \
extern kh_##name##_t *kh_init_##name();

//define
#define KHASH_INIT2(name, SCOPE, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
__KHASH_TYPE(name, khkey_t, khval_t) \
SCOPE kh_##name##_t *kh_init_##name(void) {\
return (kh_##name##_t*)calloc(1, sizeof(kh_##name##_t));\
}

#define kh_init(name) kh_init_##name()

KHASH_INIT2(objmap, SCOPE, int, int, 1, 1, 1)//定义数据类型和函数

int _tmain(int argc, _TCHAR* argv[])
{
paster(9);

(void*)kh_init(objmap);

}


输出错误:
1>------ 已启动生成: 项目: testJJ, 配置: Debug Win32 ------
1>  testJJ.cpp
1>e:\workspace\c++\testjj\testjj\testjj.cpp(37): error C3861: “kh_init_objmap”: 找不到标识符
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

这样修改一下,试试
你定义了一些宏,可是都没有用到。

热点排行