#define中的rettype和##

# define DEF(func, kind, rettype, args...)     rettype tern_ ## func (unsigned insid, ##args);

上面的rettype是宏参数,在实际使用DEF宏时,在rettype位置要有一个参数,然后在宏内容里rettype位置就会被替换为你提供的参数;##用于连接前后两个参数,把它们变成一个字符串。

DEF(pthread_create,         Synchronization, int, pthread_t *thread, const pthread_attr_t *attr, void* (*start_routine)(void *), void *arg)

就等于

int tern_pthread_create(unsigned insid, pthread_t *thread, const pthread_attr_t *attr, void* (*start_routine)(void *), void *arg);

#define中的rettype和##

时间: 2024-10-08 04:56:54

#define中的rettype和##的相关文章

volatile,可变参数,memset,内联函数,宽字符窄字符,国际化,条件编译,预处理命令,define中##和#的区别,文件缓冲,位域

 1.volatile:要求参数修改每次都从内存中的读取.这种情况要比普通运行的变量需要的时间长. #include <stdio.h> #include <stdlib.h> #include <time.h> void main() { time_t start, end; double res = 0; time(&start);  //获取时间,传递给start //volatile强制每次从内存读取 volatile int i; for (i =

#define中 #与##的神奇用法linux学习 (转)

#define中 #与##的神奇用法linux学习 (转) #define f(a,b) a##b #define d(a) #a #define s(a) d(a) void main( void ) { puts(d(f(a,b))); puts(s(f(a,b))); } 输出结果: f(a,b) ab 分析: ##把两个符号连起来 #a指把a当成符号,就是把#后面的看成字符串 # 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如,

#define中 #与##用法

参考自: http://zjf30366.blog.163.com/blog/static/411164582009061075923/ #include<cstdio> #include<iostream> using namespace std;   #define f(a,b) a##b #define d(a) #a #define s(a) d(a) int main() {     int xy = 10;     cout<< f(x,y) <<

C/C++的#define中的#和##作用

#define语句中的#是把参数字符串化,##是连接两个参数成为一个整体. #define FACTORY_REF(name) { #name, Make##name } 中#name就是将传入的name进行字符串化,Make##name就是将Make跟name进行连接,使它们成为一个整体. #define FACTORY_CREATE(name) static sp<MediaSource> Make##name(const sp<MediaSource> &source

( # #@ ## 在define中的应用)或( 连接两个字符串或者两个数字、强制转化成单引号、强制转化成双引号 )附加字符串强制转化成数字

1. 修改成常用的几个连接表示L与x连接. 以下来自网络:#define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #x x##y表示什么?表示x连接y,举例说:int n = Conn(123,456); 结果就是n=123456;char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";怎么样,很神奇吧 再来看#@x,其实就是给x

define 中强制类型转换 &amp;&amp; 浮点数后面带f

以前遇到的问题,把问题重新整一下,以便查询.

C++/C 宏定义(define)中# ## 的含义 宏拼接

C++/C 宏定义(define)中# ## 的含义 define 中的# ## 一般是用来拼接字符串的,但是实际使用过程中,有哪些细微的差别呢,我们通过几个例子来看看. #是字符串化的意思,出现在宏定义中的#是把跟在后面的参数转成一个字符串: eg: #define  strcpy__(dst, src)      strcpy(dst, #src) strcpy__(buff,abc)  相当于 strcpy__(buff,“abc”) ##是连接符号,把参数连接在一起 #define FU

define宏定义中的#,##,@#及\符号

define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (stringizing)字符串化操作符.其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串.其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前. 如: #define example(instr) printf("the input string is:\t%s\n",#

#define用法集锦

Definition: The #define Directive You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #define identifier token-stringopt #define identifier[( identifieropt, ... , identifi