文档对ufusr是这样描述的:Internal Open API Entry Point. You use ufusr as a main function entry point for all Internal Open API programs. The ufusr function may also be used for user exits. 。
很明显,文档声称对于所有的内部OPEN API程序都可以使用ufusr作为入口,结果在上面的情况中就不可以了。后面那句说ufusr也可以来作为用户出口,什么是用户出口呢?打开uf_exit.h文档,在over view里看一看。
在NX中,用户出口功能可以让你在预先指定的位置自动运行Open C API程序。出口有很多,如果你定下了这些出口中的一个,譬如ufsta,NX会检查一下,看看你是否定义了一个指向你的OPEN C API程序所在位置的”指针”,如果你定义了这个”指针”,那么NX就会运行这个程序。这个指针是一个环境变量(UNIX)。
文档中对出口如何使用有如下说明:写一个能实现你的需求的程序,如果是内部程序必须成对使用UF_initialize() 和UF_terminate(),这个和我们使用ufusr作为出口是一样的。定义指向你写的程序的指针。这可以认为是个文件指针,它所指向的内容则是对你的程序文件的描述。文件指针的定义要依赖所用的操作系统,不同的操作系统有不同的环境变量格式,当UG遇到一个用户出口时,系统就会检查指向OPEN C API程序所在位置的环境变量是否存在,如果在指定位置发现了OPEN C API程序,就自动执行它,然后返回UG。
对于这段话的理解:假如想让UG在保存文档时自动运行我们指定位置的程序,UG的文档保存就是一个出口,当用户点击”保存文档”菜单时,UG会调用操作系统的功能查看环境变量USER_FILE 是否被设置为用户程序所在的路径了,如果用户的程序存在,那么就会自动调用用户程序,此时用户程序的入口函数为ufput。UG OPEN C API中,每个出口都有一个环境变量和一个规定的用户程序入口点。但ufusr例外,它没有环境变量,但它是用户程序的入口点。