knpingan 发表于 2009-12-3 21:10:47

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

在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 编辑 ]
页: [1]
查看完整版本: 请教skyeye源码中一个编程问题!