QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1321|回复: 0

请教skyeye源码中一个编程问题!

[复制链接]
发表于 2009-12-3 21:10:47 | 显示全部楼层 |阅读模式
在skyeye1.2.9源码的文件skyeye_mach_s3c2410x.c中,有函数:
static void s3c2410x_io_write_word (ARMul_State * state, ARMword addr, ARMword data)
{
    //传递的参数state第一次被使用
    if ((addr >= UART_CTL_BASE0)
            && (addr < UART_CTL_BASE0 + UART_CTL_SIZE)) {
                s3c2410x_uart_write (state, (addr - UART_CTL_BASE0) % 0x4000,
                                     data, (addr - UART_CTL_BASE0) / 0x4000);
                return;
        }
   。。。。。。
switch (addr) {
        case SRCPND:
                io.srcpnd &= (~data & INT_MASK_INIT);
                //2006-04-04 chy, for eCos on s3c2410. SRCPND will change the INTPND, INTOFFSET, so when write SRCPND, the interrupt should be update
                extern ARMul_State * state;
                s3c2410x_update_int (state);
  (这个state是参数传递的state吗?)
                break;
        case INTMOD:
      。。。。。。
}
----------------------------------------------------
阅读该函数存在个疑问:
根据红色字体标注,s3c2410x_update_int (state);中调用的state变量是Arm_arch_interface.c中定义的全局变量(ARMul_State *state;)还是函数s3c2410x_io_write_word传递进来的参数state呢?
觉得这种编程方式很奇怪。想在VC6.0下做个试验,发现VC并不支持这种编程方式。
请达人指教!谢谢!

[ 本帖最后由 knpingan 于 2009-12-3 21:11 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 02:30 , Processed in 0.095029 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表