📄 configure.in
字号:
case "$use_purify" in no) ;; yes) AC_PATH_PROG(purify_path, purify, purify) ;; *) purify_path="$use_purify" ;;esaccase "$use_purify" in no) AC_MSG_RESULT(no) PURIFY="" ;; *) if test -f $purify_path || test $purify_path = purify; then AC_MSG_RESULT($purify_path) PURIFYFLAGS="`echo $PURIFYOPTIONS`" PURIFY="$purify_path $PURIFYFLAGS" else AC_MSG_ERROR([$purify_path not found.Please choose the proper path with the following command: configure --with-purify=PATH]) fi ;;esacAC_SUBST(PURIFY)## GNU libtool support#AC_ARG_WITH(libtool, [ --with-libtool use GNU libtool (following indented options supported)], use_libtool="$withval", use_libtool="no")case $use_libtool in yes) AM_PROG_LIBTOOL O=lo A=la LIBTOOL_MKDEP_SED='s;\.o;\.lo;' LIBTOOL_MODE_COMPILE='--mode=compile' LIBTOOL_MODE_INSTALL='--mode=install' LIBTOOL_MODE_LINK='--mode=link' ;; *) O=o A=a LIBTOOL= AC_SUBST(LIBTOOL) LIBTOOL_MKDEP_SED= LIBTOOL_MODE_COMPILE= LIBTOOL_MODE_INSTALL= LIBTOOL_MODE_LINK= ;;esac## File name extension for static archive files, for those few places# where they are treated differently from dynamic ones.#SA=aAC_SUBST(O)AC_SUBST(A)AC_SUBST(SA)AC_SUBST(LIBTOOL_MKDEP_SED)AC_SUBST(LIBTOOL_MODE_COMPILE)AC_SUBST(LIBTOOL_MODE_INSTALL)AC_SUBST(LIBTOOL_MODE_LINK)## Here begins a very long section to determine the system's networking# capabilities. The order of the tests is signficant.### IPv6#AC_ARG_ENABLE(ipv6, [ --enable-ipv6 use IPv6 [default=autodetect]])case "$enable_ipv6" in yes|''|autodetect) AC_DEFINE(WANT_IPV6) ;; no) ;;esac## We do the IPv6 compilation checking after libtool so that we can put# the right suffix on the files.#AC_MSG_CHECKING(for IPv6 structures)AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>],[struct sockaddr_in6 sin6; return (0);], [AC_MSG_RESULT(yes) found_ipv6=yes], [AC_MSG_RESULT(no) found_ipv6=no])## See whether IPv6 support is provided via a Kame add-on.# This is done before other IPv6 linking tests to LIBS is properly set.#AC_MSG_CHECKING(for Kame IPv6 support)AC_ARG_WITH(kame, [ --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]], use_kame="$withval", use_kame="no")case "$use_kame" in no) ;; yes) kame_path=/usr/local/v6 ;; *) kame_path="$use_kame" ;;esaccase "$use_kame" in no) AC_MSG_RESULT(no) ;; *) if test -f $kame_path/lib/libinet6.a; then AC_MSG_RESULT($kame_path/lib/libinet6.a) LIBS="-L$kame_path/lib -linet6 $LIBS" else AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.Please choose the proper path with the following command: configure --with-kame=PATH]) fi ;;esac## Whether netinet6/in6.h is needed has to be defined in isc/platform.h.# Including it on Kame-using platforms is very bad, though, because# Kame uses #error against direct inclusion. So include it on only# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.# This is done before the in6_pktinfo check because that's what# netinet6/in6.h is needed for.#changequote({, })case "$host" in*-bsdi4.[01]*) ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1" isc_netinet6in6_hack="#include <netinet6/in6.h>" ;;*) ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H" isc_netinet6in6_hack="" ;;esacchangequote([, ])## This is similar to the netinet6/in6.h issue.#case "$host" in*-UnixWare*) ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1" ISC_PLATFORM_FIXIN6ISADDR="#define ISC_PLATFORM_FIXIN6ISADDR 1" isc_netinetin6_hack="#include <netinet/in6.h>" ;;*) ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H" ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR" isc_netinetin6_hack="" ;;esac## Now delve deeper into the suitability of the IPv6 support.#case "$found_ipv6" in yes) HAS_INET6_STRUCTS="#define HAS_INET6_STRUCTS 1" AC_MSG_CHECKING(for in6_addr) AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>$isc_netinetin6_hack$isc_netinet6in6_hack],[struct in6_addr in6; return (0);], [AC_MSG_RESULT(yes) HAS_IN_ADDR6="#undef HAS_IN_ADDR6" isc_in_addr6_hack=""], [AC_MSG_RESULT(no) HAS_IN_ADDR6="#define HAS_IN_ADDR6 1" isc_in_addr6_hack="#define in6_addr in_addr6"]) AC_MSG_CHECKING(for in6addr_any) AC_TRY_LINK([#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>$isc_netinetin6_hack$isc_netinet6in6_hack$isc_in_addr6_hack], [struct in6_addr in6; in6 = in6addr_any; return (0);], [AC_MSG_RESULT(yes) NEED_IN6ADDR_ANY="#undef NEED_IN6ADDR_ANY"], [AC_MSG_RESULT(no) NEED_IN6ADDR_ANY="#define NEED_IN6ADDR_ANY 1"]) AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6) AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>$isc_netinetin6_hack$isc_netinet6in6_hack], [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);], [AC_MSG_RESULT(yes) result="#define HAVE_SIN6_SCOPE_ID 1"], [AC_MSG_RESULT(no) result="#undef HAVE_SIN6_SCOPE_ID"]) HAVE_SIN6_SCOPE_ID="$result" AC_MSG_CHECKING(for in6_pktinfo) AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>$isc_netinetin6_hack$isc_netinet6in6_hack], [struct in6_pktinfo xyzzy; return (0);], [AC_MSG_RESULT(yes) ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1"], [AC_MSG_RESULT(no -- disabling runtime ipv6 support) ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO"]) AC_MSG_CHECKING(for sockaddr_storage) AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>$isc_netinetin6_hack$isc_netinet6in6_hack], [struct sockaddr_storage xyzzy; return (0);], [AC_MSG_RESULT(yes) HAVE_SOCKADDR_STORAGE="#define HAVE_SOCKADDR_STORAGE 1"], [AC_MSG_RESULT(no) HAVE_SOCKADDR_STORAGE="#undef HAVE_SOCKADDR_STORAGE"]) ;; no) HAS_INET6_STRUCTS="#undef HAS_INET6_STRUCTS" NEED_IN6ADDR_ANY="#undef NEED_IN6ADDR_ANY" ISC_PLATFORM_HAVEIN6PKTINFO="#undef ISC_PLATFORM_HAVEIN6PKTINFO" HAVE_SIN6_SCOPE_ID="#define HAVE_SIN6_SCOPE_ID 1" HAVE_SOCKADDR_STORAGE="#undef HAVE_SOCKADDR_STORAGE" ISC_IPV6_H="ipv6.h" ISC_IPV6_O="ipv6.$O" ISC_ISCIPV6_O="unix/ipv6.$O" ISC_IPV6_C="ipv6.c" ;;esacAC_SUBST(HAS_INET6_STRUCTS)AC_SUBST(ISC_PLATFORM_NEEDNETINETIN6H)AC_SUBST(ISC_PLATFORM_NEEDNETINET6IN6H)AC_SUBST(HAS_IN_ADDR6)AC_SUBST(NEED_IN6ADDR_ANY)AC_SUBST(ISC_PLATFORM_HAVEIN6PKTINFO)AC_SUBST(ISC_PLATFORM_FIXIN6ISADDR)AC_SUBST(ISC_IPV6_H)AC_SUBST(ISC_IPV6_O)AC_SUBST(ISC_ISCIPV6_O)AC_SUBST(ISC_IPV6_C)AC_SUBST(HAVE_SIN6_SCOPE_ID)AC_SUBST(HAVE_SOCKADDR_STORAGE)## Check for network functions that are often missing. We do this# after the libtool checking, so we can put the right suffix on# the files. It also needs to come after checking for a Kame add-on,# which provides some (all?) of the desired functions.#AC_MSG_CHECKING([for inet_ntop])AC_TRY_LINK([#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>], [inet_ntop(0, 0, 0, 0); return (0);], [AC_MSG_RESULT(yes) ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"], [AC_MSG_RESULT(no) ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_ntop.$O" ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_ntop.c" ISC_PLATFORM_NEEDNTOP="#define ISC_PLATFORM_NEEDNTOP 1"])AC_MSG_CHECKING([for inet_pton])AC_TRY_LINK([#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>], [inet_pton(0, 0, 0); return (0);], [AC_MSG_RESULT(yes) ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON"], [AC_MSG_RESULT(no) ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_pton.$O" ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_pton.c" ISC_PLATFORM_NEEDPTON="#define ISC_PLATFORM_NEEDPTON 1"])AC_MSG_CHECKING([for inet_aton])AC_TRY_LINK([#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>], [struct in_addr in; inet_aton(0, &in); return (0);], [AC_MSG_RESULT(yes) ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON"], [AC_MSG_RESULT(no) ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS inet_aton.$O" ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS inet_aton.c" ISC_PLATFORM_NEEDATON="#define ISC_PLATFORM_NEEDATON 1"])AC_SUBST(ISC_PLATFORM_NEEDNTOP)AC_SUBST(ISC_PLATFORM_NEEDPTON)AC_SUBST(ISC_PLATFORM_NEEDATON)## Look for a 4.4BSD-style sa_len member in struct sockaddr.#case "$host" in *-dec-osf*) # Turn on 4.4BSD style sa_len support. AC_DEFINE(_SOCKADDR_LEN) ;;esacAC_MSG_CHECKING(for sa_len in struct sockaddr)AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>],[struct sockaddr sa; sa.sa_len = 0; return (0);], [AC_MSG_RESULT(yes) HAVE_SA_LEN="#define HAVE_SA_LEN 1"], [AC_MSG_RESULT(no) HAVE_SA_LEN="#undef HAVE_SA_LEN"])AC_SUBST(HAVE_SA_LEN)# HAVE_MINIMUM_IFREQcase "$host" in *-bsdi[2345]*) have_minimum_ifreq=yes;; *-darwin*) have_minimum_ifreq=yes;; *-freebsd*) have_minimum_ifreq=yes;; *-lynxos*) have_minimum_ifreq=yes;; *-netbsd*) have_minimum_ifreq=yes;; *-next*) have_minimum_ifreq=yes;; *-openbsd*) have_minimum_ifreq=yes;; *-rhapsody*) have_minimum_ifreq=yes;;esaccase "$have_minimum_ifreq" in yes) HAVE_MINIMUM_IFREQ="#define HAVE_MINIMUM_IFREQ 1";; no) HAVE_MINIMUM_IFREQ="#undef HAVE_MINIMUM_IFREQ";; *) HAVE_MINIMUM_IFREQ="#undef HAVE_MINIMUM_IFREQ";;esacAC_SUBST(HAVE_MINIMUM_IFREQ)# PORT_DIRPORT_DIR=port/unknownSOLARIS_BITTYPES="#undef NEED_SOLARIS_BITTYPES"BSD_COMP="#undef BSD_COMP"USE_FIONBIO_IOCTL="#undef USE_FIONBIO_IOCTL"PORT_NONBLOCK="#define PORT_NONBLOCK O_NONBLOCK"HAVE_MD5="#undef HAVE_MD5"USE_POLL="#undef HAVE_POLL"SOLARIS2="#undef SOLARIS2"case "$host" in *aix3.2*) PORT_DIR="port/aix32";; *aix4*) PORT_DIR="port/aix4";; *aix5*) PORT_DIR="port/aix5";; *aux3*) PORT_DIR="port/aux3";; *-bsdi2*) PORT_DIR="port/bsdos2";; *-bsdi*) PORT_DIR="port/bsdos";; *-cygwin*) PORT_NONBLOCK="#define PORT_NONBLOCK O_NDELAY" PORT_DIR="port/cygwin";; *-darwin*) PORT_DIR="port/darwin";; *-osf*) PORT_DIR="port/decunix";; *-freebsd*) PORT_DIR="port/freebsd";; *-hpux9*) PORT_DIR="port/hpux9";; *-hpux10*) PORT_DIR="port/hpux10";; *-hpux11*) PORT_DIR="port/hpux";; *-irix*) PORT_DIR="port/irix";; *-linux*) PORT_DIR="port/linux";; *-lynxos*) PORT_DIR="port/lynxos";; *-mpe*) PORT_DIR="port/mpe";; *-netbsd*) PORT_DIR="port/netbsd";; *-next*) PORT_DIR="port/next";; *-openbsd*) PORT_DIR="port/openbsd";; *-qnx*) PORT_DIR="port/qnx";; *-rhapsody*) PORT_DIR="port/rhapsody";; *-sunos4*) PORT_NONBLOCK="#define PORT_NONBLOCK O_NDELAY" PORT_DIR="port/sunos";; *-solaris2.[[01234]]) BSD_COMP="#define BSD_COMP 1" SOLARIS_BITTYPES="#define NEED_SOLARIS_BITTYPES 1" USE_FIONBIO_IOCTL="#define USE_FIONBIO_IOCTL 1" SOLARIS2="#define SOLARIS2 1" PORT_DIR="port/solaris";; *-solaris2.5) BSD_COMP="#define BSD_COMP 1" SOLARIS_BITTYPES="#define NEED_SOLARIS_BITTYPES 1" SOLARIS2="#define SOLARIS2 1" PORT_DIR="port/solaris";; *-solaris2.[[67]]) BSD_COMP="#define BSD_COMP 1" SOLARIS2="#define SOLARIS2 1" PORT_DIR="port/solaris";; *-solaris2*) BSD_COMP="#define BSD_COMP 1" USE_POLL="#define USE_POLL 1" HAVE_MD5="#define HAVE_MD5 1" SOLARIS2="#define SOLARIS2 1" PORT_DIR="port/solaris";; *-ultrix*) PORT_DIR="port/ultrix";; *-sco-sysv*uw2.0*) PORT_DIR="port/unixware20";; *-sco-sysv*uw2.1.2*) PORT_DIR="port/unixware212";; *-sco-sysv*uw7*) PORT_DIR="port/unixware7";;esacAC_SUBST(BSD_COMP)AC_SUBST(SOLARIS_BITTYPES)AC_SUBST(USE_FIONBIO_IOCTL)AC_SUBST(PORT_NONBLOCK)AC_SUBST(PORT_DIR)AC_SUBST(USE_POLL)AC_SUBST(HAVE_MD5)AC_SUBST(SOLARIS2)PORT_INCLUDE=${PORT_DIR}/includeAC_SUBST(PORT_INCLUDE)## Look for a 4.4BSD or 4.3BSD struct msghdr#AC_MSG_CHECKING(for struct msghdr flavor)AC_TRY_COMPILE([#include <sys/types.h>#include <sys/socket.h>],[struct msghdr msg; msg.msg_flags = 0; return (0);], [AC_MSG_RESULT(4.4BSD) ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1"], [AC_MSG_RESULT(4.3BSD) ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD43MSGHDR 1"])AC_SUBST(ISC_PLATFORM_MSGHDRFLAVOR)## Look for in_port_t.#AC_MSG_CHECKING(for type in_port_t)AC_TRY_COMPILE([#include <sys/types.h>#include <netinet/in.h>],[in_port_t port = 25; return (0);], [AC_MSG_RESULT(yes) ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT"], [AC_MSG_RESULT(no) ISC_PLATFORM_NEEDPORTT="#define ISC_PLATFORM_NEEDPORTT 1"])AC_SUBST(ISC_PLATFORM_NEEDPORTT)## Check for addrinfo#AC_MSG_CHECKING(for struct addrinfo)AC_TRY_COMPILE([#include <netdb.h>],[struct addrinfo a; return (0);], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ADDRINFO)], [AC_MSG_RESULT(no)])AC_MSG_CHECKING(for int sethostent)AC_TRY_COMPILE([#include <netdb.h>],[int i = sethostent(0); return(0);], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])AC_MSG_CHECKING(for int endhostent)AC_TRY_COMPILE([#include <netdb.h>],[int i = endhostent(); return(0);], [AC_MSG_RESULT(yes) ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1"], [AC_MSG_RESULT(no) ISC_LWRES_ENDHOSTENTINT="#undef ISC_LWRES_ENDHOSTENTINT"])AC_SUBST(ISC_LWRES_ENDHOSTENTINT)AC_MSG_CHECKING(for int setnetent)AC_TRY_COMPILE([#include <netdb.h>],[int i = setnetent(0); return(0);], [AC_MSG_RESULT(yes) ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1"], [AC_MSG_RESULT(no) ISC_LWRES_SETNETENTINT="#undef ISC_LWRES_SETNETENTINT"])AC_SUBST(ISC_LWRES_SETNETENTINT)AC_MSG_CHECKING(for int endnetent)AC_TRY_COMPILE([#include <netdb.h>],[int i = endnetent(); return(0);], [AC_MSG_RESULT(yes) ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1"], [AC_MSG_RESULT(no) ISC_LWRES_ENDNETENTINT="#undef ISC_LWRES_ENDNETENTINT"])AC_SUBST(ISC_LWRES_ENDNETENTINT)AC_MSG_CHECKING(for gethostbyaddr(const void *, size_t, ...))AC_TRY_COMPILE([#include <netdb.h>struct hostent *gethostbyaddr(const void *, size_t, int);],[return(0);], [AC_MSG_RESULT(yes) ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1"], [AC_MSG_RESULT(no) ISC_LWRES_GETHOSTBYADDRVOID="#undef ISC_LWRES_GETHOSTBYADDRVOID"])AC_SUBST(ISC_LWRES_GETHOSTBYADDRVOID)AC_MSG_CHECKING(for h_errno in netdb.h)AC_TRY_COMPILE([#include <netdb.h>],[h_errno = 1; return(0);], [AC_MSG_RESULT(yes) ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO"], [AC_MSG_RESULT(no) ISC_LWRES_NEEDHERRNO="#define ISC_LWRES_NEEDHERRNO 1"])AC_SUBST(ISC_LWRES_NEEDHERRNO)AC_CHECK_FUNC(getipnodebyname, [ISC_LWRES_GETIPNODEPROTO="#undef ISC_LWRES_GETIPNODEPROTO"], [ISC_LWRES_GETIPNODEPROTO="#define ISC_LWRES_GETIPNODEPROTO 1"])AC_CHECK_FUNC(getnameinfo, [ISC_LWRES_GETNAMEINFOPROTO="#undef ISC_LWRES_GETNAMEINFOPROTO"], [ISC_LWRES_GETNAMEINFOPROTO="#define ISC_LWRES_GETNAMEINFOPROTO 1"])AC_CHECK_FUNC(getaddrinfo, [ISC_LWRES_GETADDRINFOPROTO="#undef ISC_LWRES_GETADDRINFOPROTO" AC_DEFINE(HAVE_GETADDRINFO)], [ISC_LWRES_GETADDRINFOPROTO="#define ISC_LWRES_GETADDRINFOPROTO 1"])AC_CHECK_FUNC(gai_strerror, AC_DEFINE(HAVE_GAISTRERROR))AC_SUBST(ISC_LWRES_GETIPNODEPROTO)AC_SUBST(ISC_LWRES_GETADDRINFOPROTO)AC_SUBST(ISC_LWRES_GETNAMEINFOPROTO)AC_CHECK_FUNC(pselect, [NEED_PSELECT="#undef NEED_PSELECT"], [NEED_PSELECT="#define NEED_PSELECT"])AC_SUBST(NEED_PSELECT)AC_CHECK_FUNC(gettimeofday, [NEED_GETTIMEOFDAY="#undef NEED_GETTIMEOFDAY"], [NEED_GETTIMEOFDAY="#define NEED_GETTIMEOFDAY 1"])AC_SUBST(NEED_GETTIMEOFDAY)AC_CHECK_FUNC(strndup, [HAVE_STRNDUP="#define HAVE_STRNDUP 1"], [HAVE_STRNDUP="#undef HAVE_STRNDUP"])AC_SUBST(HAVE_STRNDUP)## Look for a sysctl call to get the list of network interfaces.#AC_MSG_CHECKING(for interface list sysctl)AC_EGREP_CPP(found_rt_iflist, [#include <sys/param.h>#include <sys/sysctl.h>#include <sys/socket.h>#ifdef NET_RT_IFLISTfound_rt_iflist#endif], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_IFLIST_SYSCTL)], [AC_MSG_RESULT(no)])## Check for some other useful functions that are not ever-present.#AC_CHECK_FUNC(strsep, [ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], [ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"])AC_CHECK_FUNC(vsnprintf, [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"], [ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS print.$O" ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS print.c" ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"])AC_SUBST(ISC_PLATFORM_NEEDSTRSEP)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -