/* Minimal main program -- everything is loaded from the library */#include "Python.h"#include <locale.h>#ifdef __FreeBSD__#include <fenv.h>#endif#ifdef MS_WINDOWSintwmain(int argc, wchar_t **argv){return Py_Main(argc, argv);}#elseintmain(int argc, char **argv){wchar_t **argv_copy;/* We need a second copy, as Python might modify the first one. */wchar_t **argv_copy2;int i, res;char *oldloc;/* Force malloc() allocator to bootstrap Python */(void)_PyMem_SetupAllocators("malloc");argv_copy = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));argv_copy2 = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));if (!argv_copy || !argv_copy2) {fprintf(stderr, "out of memory\n");return 1;}/* 754 requires that FP exceptions run in "no stop" mode by default,* and until C vendors implement C99's ways to control FP exceptions,* Python requires non-stop mode. Alas, some platforms enable FP* exceptions by default. Here we disable them.*/#ifdef __FreeBSD__fedisableexcept(FE_OVERFLOW);#endifoldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL));if (!oldloc) {fprintf(stderr, "out of memory\n");return 1;}setlocale(LC_ALL, "");for (i = 0; i < argc; i++) {argv_copy[i] = Py_DecodeLocale(argv[i], NULL);if (!argv_copy[i]) {PyMem_RawFree(oldloc);fprintf(stderr, "Fatal Python error: ""unable to decode the command line argument #%i\n",i + 1);return 1;}argv_copy2[i] = argv_copy[i];}argv_copy2[argc] = argv_copy[argc] = NULL;setlocale(LC_ALL, oldloc);PyMem_RawFree(oldloc);res = Py_Main(argc, argv_copy);/* Force again malloc() allocator to release memory blocks allocatedbefore Py_Main() */(void)_PyMem_SetupAllocators("malloc");for (i = 0; i < argc; i++) {PyMem_RawFree(argv_copy2[i]);}PyMem_RawFree(argv_copy);PyMem_RawFree(argv_copy2);return res;}#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。