Proteus仿真出现“Internal Exception: access violation in module ‘LOADERS.DLL‘ [00020627].”错误

Proteus仿真问题

 

在使用 Proteus 8.4 进行仿真时, 出现错误提示 Internal Exception: access violation in module 'LOADERS.DLL' [00020627].

 

 

在写软件进行仿真时,前一刻还能正常运行,后一刻整理了代码后仿真立马出现了该错误,但是编译又是没有任何问题,排查了很久,原来是因为定义了一个结构体时导致的。

struct tag { 
    member-list
    member-list 
    member-list  
    ...
};

struct tag test;

上述代码如何定义一个结构体和使用一个结构体类型定义变量,因为每次需要多敲一个 struct,所以通常我都会采用下面的写法,采用关键词 typedef 为结构体类型定义一个新名字,之后直接使用 test_t 定义变量就行了。

typedef struct
{
    char a;
    int  b;
}test_t;

test_t test;

通常采用上面的方式是没有什么发问题的,因为我一直这么用,直到最近重新使用 proteus 做一些仿真测试,保持以前的习惯,采用了上述定义,导致仿真时报错 “ Internal Exception: access violation in module 'LOADERS.DLL' [00020627]

原因就出现在这个 typedef 的使用上,必须写上标签名字,如 tag_test;重新编译后就可以正常仿真了。。。(PS:typedef unsigned char uint8_t;  这种定义没问题)

typedef struct tag_test
{
    char a;
    int  b;
}test_t;

test_t test;

以后养成习惯,定义结构体时,采用关键词 typedef 为结构体类型定义一个新名字一定要命名标签(作为规范约束自己)!!!

 

posted @ 2022-06-10 19:04  大橙子疯  阅读(804)  评论(0编辑  收藏  举报