日期:2014-05-16  浏览次数:20704 次

关于define的一个问题
这是我在i2c.h文件中的摘录:

/* This is ugly. We need to evaluate I2C_CLIENT_MAX_OPTS before it is 
  stringified */
#define I2C_CLIENT_MODPARM_AUX1(x) "1-" #x "h"
#define I2C_CLIENT_MODPARM_AUX(x) I2C_CLIENT_MODPARM_AUX1(x)
#define I2C_CLIENT_MODPARM I2C_CLIENT_MODPARM_AUX(I2C_CLIENT_MAX_OPTS)

/* I2C_CLIENT_MODULE_PARM creates a module parameter, and puts it in the
  module header */

#define I2C_CLIENT_MODULE_PARM(var,desc) \
  static unsigned short var[I2C_CLIENT_MAX_OPTS] = I2C_CLIENT_DEFAULTS; \
  MODULE_PARM(var,I2C_CLIENT_MODPARM); \
  MODULE_PARM_DESC(var,desc)

红色的一行是什么意思?
谢谢各位不吝赐教!!!

------解决方案--------------------
宏中间定义中的"#"说明:
"#"可将传递的宏字符串化
"##"将两个名字连接成一个(注意不是连接成字符串)

I2C_CLIENT_MODPARM_AUX1(a) = "1-ah" 

参考
http://www.cppblog.com/jinglexy/archive/2007/04/19/22298.html