C 和Python使用同一个枚举的方法

文章作者 100test 发表时间 2008:03:31 11:36:20
来源 100Test.Com百考试题网


为了能快速修改程序的逻辑,我在C 程序中使用了 Python作为脚本。

  程序内部需要接收脚本传过来的一些不同类型的消息,在C 程序中使用了枚举来区分这些消息。 于是编写脚本时想到:

  如何能在Python中也使用这些枚举?如何只维护一个文件?

  1.Python中没有枚举类型,所以打算在文件中直接写一些变量并赋值:
  ENUM_VALUE1 = 1
  ENUM_VALUE2 = 2
  ...

  2.C 中的变量必须声明,所以只能使用枚举或宏定义,但是"#"在Python中是注释,所以只能使用枚举,所以我打算将定义文件写成上面那种形式(假设文件名:"Micro.py"),然后C 中:
  enum
  {
   #include "Micro.h"
  }

  但是 enum 中的每个定义后面都应该有逗号",",要不然C 中就无法编译通过了,所以我加入另一个文件"Comma.h",文件中只有一个逗号",",然后把定义文件修改成这样:
  ENUM_VALUE1 = 1
  #include "Comma.h"
  ENUM_VALUE2 = 2
  #include "Comma.h"
  ...

  3.我们的定义文件中还应该有注释内容,要不然别人就看不懂这些定义到底代表啥意思了,考虑到C 中的注释用"//",Python中的注释用"#",而"#"在C 中是编译预处理指令的开始,所以我又把定义文件改写成这样:
  #define _C_PY_DESCRIBE1 "宏定义描述1"
  ENUM_VALUE1 = 1
  #include "Comma.h"
  #define _C_PY_DESCRIBE2 "宏定义描述2"
  ENUM_VALUE2 = 2
  #include "Comma.h"
  ...
  结束了,呵呵,虽然很变态,但是至少实现了宏定义的统一;

  其他:
  1.文件扩展名只能保存为".py",所以C 中看不到语法高亮了。
  2.如果注释中包含中文,那么宏定义文件应该保存为utf8格式,否则Python会提示未声明解码方式。

相关文章


计算一个数的二进制表示中有多少个1
malloc()以及free()的机制研究学习
谈谈C 内存越界问题及解决方法
C 宏定义中的##和#的区别
C 和Python使用同一个枚举的方法
C 中文件的读写实现方法
2007年报关员考试辅导资料出口贸易的基本业务程序
C 数值类型转换方法
统计不固定栏目的工资年报的存储过程
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛