当前位置:  开发笔记 > 编程语言 > 正文

为什么POSIX与Win32一起使用floor()发出警告?

如何解决《为什么POSIX与Win32一起使用floor()发出警告?》经验,为你挑选了1个好方法。

我在下面编写了以下相对简单的代码,以抛出一个弹出框来提醒我日常任务。

#use Math::Round;
use POSIX;
use Win32;

use strict;
use warnings;

my $basetime = 1484784000;

#code with POSIX
my $days = floor((time()-$basetime) / 86400);

#code without POSIX
#my $days = sprintf("%d", (time()-$basetime) / 86400);

#code with Math::Round
#my $days = Math::Round::nearest_floor(1, (time()-$basetime) / 86400);

my $bigString = "We've been going for $days days.\n";

Win32::MsgBox($bigString);

现在,该代码可以运行,但是会发出警告。其他两个也可以my $days正常工作而不会发出警告。这是POSIX功能显示的警告。

Constant subroutine main::NULL redefined at C:/Strawberry/perl/lib/Exporter.pm line 66.
 at C:\coding\perl\posix-win32.pl line 3.
Prototype mismatch: sub main::NULL () vs none at C:/Strawberry/perl/lib/Exporter.pm line 66.
 at C:\coding\perl\posix-win32.pl line 3.

我以前从未POSIX与过结合使用Win32过,而且可以看到它们都在调用类似的函数NULL。但是我不知道该怎么办。

我喜欢同时使用这两个模块,但是显然,我不希望在更复杂的项目中出现这种情况。

发出警告的原因是什么,我怎么能简单地避免警告呢?



1> Schwern..:

没错,默认情况下,POSIX和Win32导出都正确NULL

POSIX是一个行为不佳的模块,默认情况下,它的出口远,远,远。(底部列表)。为此,仅导入所需的功能。

use Win32;
use POSIX qw(floor);

POSIX使用Exporter完成此任务。有关控制导入内容的更多详细信息,请参见如何导入。

$ perl -wle'使用POSIX; 打印联接“,”,@POSIX :: EXPORT'

isupper,isspace,fabs,F_GETLK,strncpy,EBADMSG,localeconv,SIGTRAP,ctermid,S_ISUID,fwrite,pow,strcoll,S_ISBLK,_POSIX_STREAM_MAX,EACCES,putc,FILENAME_MAX,tolower,sinh,PORTUP,SOCH,EMUP, TOSTOP,strncat,LINK_MAX,ENXIO,INLCR,TCION,NAME_MAX,EINPROGRESS,SIGILL,NDEBUG,VEOF,SEEK_END,ungetc,SEEK_CUR,STDOUT_FILENO,VEOL,ftell,UINT_MAX,ENOTEMPTY,DBL_EPSILON,INCALTY,DBL_EPSILON, SIGSEGV,_POSIX_PATH_MAX,F_RDLCK,SIG_BLOCK,VINTR,SA_NOCLDSTOP,PATH_MAX,isdigit,log10,O_RDWR,ENOTCONN,TMP_MAX,信号,F_SETLKW,qsort,O_TRUNC,_SC_TZNAME_MAX,_POS_CH,_CHUNC_NG,UPS,CHATE_CHUNC_NGROUPS O_APPEND,_POSIX_ARG_MAX,EWOULDBLOCK,TCSAFLUSH,strstr,_exit,execle,malloc,DBL_MANT_DIG,_POSIX_SSIZE_MAX,_SC_JOB_CONTROL,ttyname,B150,EMFILE,CS6,_POSIX_LINK_MAX,asin,mblen,_POSIX_PIPE_BUF,sigsuspend,B600,SIGPROF,L_ctermid,_SC_CLK_TCK,ceil,ECHILD,tmpfile,NOSET,ESET,ESET, stderr,fscanf,modf,setpgid,tcgetpgrp,toupper,ENETRESET,B2400,raise,S_ISDIR,_SC_PAGESIZE,DBL_MAX_EXP,sysconf,EIDRM,F_SETFD,O_NOCTTY,EHOSTDOWN,FLT_MAX,CSTOPB,S_IRWXU,S_IRWXU,set strerror,FLT_MIN_EXP,TCIOFF,tan,SIGCONT,EDQUOT,MB_CUR_MAX,_PC_PATH_MAX,SIGTTOU,SIGXCPU,EROFS,fdopen,_PC_VDISABLE,CHILD_MAX,ETXTBSY,S_ISCHR,SIGTTIN,MAX,RUN,RUN,VERTO fstat,_PC_MAX_INPUT,F_SETLK,SIGHUP,S_IXUSR,ETIME,DBL_MAX_10_EXP,execvp,ENOTSOCK,DBL_MIN_10_EXP,TCSADRAIN,isalnum,getchar,EMSGSIZE,TCIOFLUSH,_SC_NGROUPS_MAX,FLT_RADIX,ENOTDIR,_PC_LINK_MAX,strspn,S_IRWXG,_POSIX_NO_TRUNC,EXIT_SUCCESS,VKILL,acos,ERESTART,vprintf,EPFNOSUPPORT,IGNCR,_PC_MAX_CAN,MAX_START,DI_T,MOD_T,MAX_START,DI_T,MOD_T,ID_SET islower,EXIT_FAILURE,时钟,ENETDOWN,CS7,strrchr,SIGUSR2,tcdrain,INT_MIN,LDBL_DIG,_POSIX_JOB_CONTROL,SIG_UNBLOCK,_SC_STREAM_MAX,X_OK,F_UNLCK,ETIMEDOUT,CHAR_OK,IGTO,速LDBL_MIN,_SC_CHILD_MAX,CLK_TCK,NCCS,tzset,ENOMEM,获取,BRKINT,EDOM,ENODATA,ENOBUFS,ISTRIP,CLOCKS_PER_SEC,LDBL_MIN_EXP,SHRT_MIN,PARODD,EOF,asctime,ENFILE,FPROCUP,F, difftime,TCOFLUSH,EINTR,ENOMSG,L_cuserid,B4800,EAGAIN,TCOON,setjmp,TZNAME_MAX,S_IWOTH,cuserid,PIPE_BUF,strtol,HUGE_VAL,F_GETFD,IGNPAR,EBUSY,memmove,ENOTBLK,getgid,SIGINT,EUSERS,SIGURG,EDEADLK,EOWNERDEAD,creat,_POSIX_MAX_CANON, ENOTRECOVERABLE,B300,B200,HUPCL,WTERMSIG,offsetof,clearerr,tanh,getcwd,LDBL_MAX_10_EXP,SIG_SETMASK,ECHONL,O_NONBLOCK,S_IXOTH,ECONNABORTED,F_OK,tcflush, getpid,B1800,NOFLSH,SIGUSR1,ECONNRESET,wcstombs,ESPIPE,WSTOPSIG,快退,BUFSIZ,SIGABRT,STREAM_MAX,vsprintf,tcsendbreak,LDBL_MIN_10_EXP,pathconf,S_IRGRP,_SC_SAVED_IDS,OPOST, fread,B1200,LC_MESSAGES,EXDEV,S_IROTH,longjmp,SA_RESETHAND,LC_ALL,ENOSYS,calloc,B110,FLT_EPSILON,断言,VQUIT,B50,ICANON,IXON,ECONNREFUSED,strftime,_PC_PIPE_BUF,ERANGE,SA_ONSTACK,punctct,_POSIX_MAX_INPUT,WIFSTOPPED,ldexp,ENOLCK,EOTHER,_PC_CHOWN_RESTRICTED,MAXEN,PARENTB,OREN EPIPE,isalpha,USHRT_MAX,SA_RESTART,bsearch,IGNBRK,stdin,EPROTONOSUPPORT,ENOSPC,fgets,getegid,EAFNOSUPPORT,setvbuf,SIGTSTP,getuid,ESHUTDOWN,LONG_MIN,fgetpos,_POSIX_VERSION,frexp,%IRTA, ,atol,cfsetospeed,SIGALRM,fpathconf,B38400,L_tmpname,_POSIX_OPEN_MAX,ESTALE,LC_CTYPE,S_ISREG,WIFEXITED,EPROTOTYPE,SIG_IGN,EIO,ENAMETOOLONG,EPERM,atoi,isgraph,ENOENT,ER_,MAX_IR _,_ S_ISREG, ,getenv,CS8,EINVAL,NULL,ECHO,LDBL_EPSILON,SCHAR_MIN,ENETUNREACH,uname,DBL_MAX,ENOPROTOOPT,SIGSTOP,strtoul,SA_NODEFER,CREAD,SIGBUS,mbstowcs,EFBIG,cfsetispeed,ISIG,FLT_MIN,SA_NOCLDWAIT,fsync,LDBL_MAX_EXP,ENOTTY,VMIN,strtod,TCIFLUSH,SA_SIGINFO,fclose,strcspn,strMNC,strmbr, getgroups,vfprintf,ENOSR,FLT_ROUNDS,EEXIST,S_IWGRP,ENOEXEC,SIGVTALRM,SIGPOLL,memcmp,atan,putchar,_POSIX_CHILD_MAX,fflush,fsetpos,WEXITSTATUS,atof,EFAULT,MAX__MAX,len set,strcat,VSTOP, FLT_MIN_10_EXP,cosh,tcgetattr,realloc,div,CHAR_MAX,fprintf,UCHAR_MAX,execve,B75,ICRNL,strcpy,ECHOK,FD_CLOEXEC,cfgetispeed,iscntrl,strtok,SSIZE_MAX,SIGSYS,S_ISGID,S_ISGID memcpy,F_GETFL,VTIME,dup,EALREADY,fseek,strcmp,SIGXFSZ,dup2,wctomb,SHRT_MAX,SIGFPE,SIG_ERR,_SC_ARG_MAX,setgid,execl,RAND_MAX,CSIZE,tcflow,CS5,LC_MONETARY,TCOOFF,_POSIX_VDISABLE,PARMRK,perror,mkfifo,ENODEV,S_IXGRP,WNOHANG,ferror,WUNTRACED,floor,INT_MAX,EOPNOTSUPP,OPEN_MAX,LDBL_MANT_DIG,DBL_DIG,SIGRTMIN,CHARTMIN,CHARTMIN,CHARTMIN,CHAR EOVERFLOW,S_IWUSR,IXOFF,EILSEQ,DBL_MIN_EXP,ENOTSUP,EBADF,B19200,免费,fputc,NGROUPS_MAX,FLT_DIG


不从Win32导入(使用Win32 qw();`)也会很好。它只导出一些很少使用的常量(没有函数!)。
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有