mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
4ff3f20540
According to MSVC manual (*1), cl.exe can skip including a header file when that: - contains #pragma once, or - starts with #ifndef, or - starts with #if ! defined. GCC has a similar trick (*2), but it acts more stricter (e. g. there must be _no tokens_ outside of #ifndef...#endif). Sun C lacked #pragma once for a looong time. Oracle Developer Studio 12.5 finally implemented it, but we cannot assume such recent version. This changeset modifies header files so that each of them include strictly one #ifndef...#endif. I believe this is the most portable way to trigger compiler optimizations. [Bug #16770] *1: https://docs.microsoft.com/en-us/cpp/preprocessor/once *2: https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html
52 lines
1 KiB
C
52 lines
1 KiB
C
#ifndef DLN_H
|
|
#define DLN_H
|
|
/**********************************************************************
|
|
|
|
dln.h -
|
|
|
|
$Author$
|
|
created at: Wed Jan 19 16:53:09 JST 1994
|
|
|
|
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
|
|
|
**********************************************************************/
|
|
|
|
#include "ruby/defines.h" /* for RUBY_SYMBOL_EXPORT_BEGIN */
|
|
|
|
#ifdef __cplusplus
|
|
# ifndef HAVE_PROTOTYPES
|
|
# define HAVE_PROTOTYPES 1
|
|
# endif
|
|
# ifndef HAVE_STDARG_PROTOTYPES
|
|
# define HAVE_STDARG_PROTOTYPES 1
|
|
# endif
|
|
#endif
|
|
|
|
#undef _
|
|
#ifdef HAVE_PROTOTYPES
|
|
# define _(args) args
|
|
#else
|
|
# define _(args) ()
|
|
#endif
|
|
|
|
RUBY_SYMBOL_EXPORT_BEGIN
|
|
|
|
#ifndef DLN_FIND_EXTRA_ARG
|
|
#define DLN_FIND_EXTRA_ARG
|
|
#endif
|
|
#ifndef DLN_FIND_EXTRA_ARG_DECL
|
|
#define DLN_FIND_EXTRA_ARG_DECL
|
|
#endif
|
|
|
|
char *dln_find_exe_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
|
|
char *dln_find_file_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
|
|
|
|
#ifdef USE_DLN_A_OUT
|
|
extern char *dln_argv0;
|
|
#endif
|
|
|
|
void *dln_load(const char*);
|
|
|
|
RUBY_SYMBOL_EXPORT_END
|
|
|
|
#endif
|