精华内容
下载资源
问答
  • __FILE__与__LINE__

    2013-01-20 17:34:35
    __FILE__与__LINE__是预定义的,实现了标准的编译器中均可使用这些 __FILE__输出的是当前输入文件的路径,含文件名,而__LINE__输出当前代码所在的行号(整数变量) 以下文字部分引用自...

    看<<C intefaces and implementations>>时看到__FILE__与__LINE__,不甚理解,于是乎查了下。


    __FILE__与__LINE__是预定义的宏,实现了标准的编译器中均可使用这些宏

    __FILE__宏输出的是当前输入文件的路径,含文件名,而__LINE__宏输出当前代码所在的行号(整数变量)

    以下文字部分引用自http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

    __FILE__
    This macro expands to the name of the current input file, in the form of a C string constant. This is the path by which the preprocessor opened the file, not the short name specified in ` #include' or as the input file name argument. For example,  "/usr/local/include/myheader.h" is a possible expansion of this macro. 
    __LINE__
    This macro expands to the current input line number, in the form of a decimal integer constant. While we call it a predefined macro, it's a pretty strange macro, since its “definition” changes with each new line of source code.

    __FILE__ and __LINE__ are useful in generating an error message to report an inconsistency detected by the program; the message can state the source line at which the inconsistency was detected. For example,

         fprintf (stderr, "Internal error: "
                          "negative string length "
                          "%d at %s, line %d.",
                  length, __FILE__, __LINE__);


    #include<stdio.h>
    int main(){
    	printf("%s\n",__FILE__);
    	printf("%d\n",__LINE__);
    
    	return 0;
    }


    展开全文
  • __FILE__,__LINE__引申

    千次阅读 2009-04-08 14:40:00
    ////// __FILE__, __LINE__, __DATE__,__TIME__, 被定义在全局名子空间中! // 当编译标准 C 程序时,编译器自动定义 __STDC__ // 当编译标准 C++ 程序时,编译器自动定义 __cplusplus #include "s

    // ProDefConstVar.cpp : 定义控制台应用程序的入口点。
    //
    //
    // __FILE__,   __LINE__,   __DATE__,__TIME__,   被定义在全局名子空间中!  
    // 当编译标准   C   程序时,编译器自动定义   __STDC__  
    // 当编译标准   C++   程序时,编译器自动定义   __cplusplus  


    #include "stdafx.h"

    #include   <iostream>  
    using   namespace   std;  

    class mytest
    {
    public:
    //  void output()
    //  {
    //   cout<<"源文件函数为"<<__CLASS__<<endl;      //类的名称(这是 PHP 4.3.0 新加的)。
    //   cout<<"源文件函数为"<<__METHOD__<<endl;  //类的方法名(这是 PHP 5.0.0 新加的)。
    // }
    protected:
    private:
    };

    void   main(void)  

     cout   <<   __FILE__   <<   endl;   //   当前文件路径  
     cout   <<   __LINE__   <<   endl;   //   当前文件编译行数  
     cout   <<   __DATE__   <<   endl;   //   编译日期  
     cout   <<   __TIME__   <<   endl;   //   编译时间 

     cout<<"此版本编译于"<<__DATE__<<endl;  
     cout<<"源文件名为"<<__FILE__<<endl;
     cout<<"源文件函数为"<<__FUNCTION__<<endl;

     cout<<  __cplusplus <<endl;
     //cout<<  __STDC__ <<endl;  //此为C++程序所以__STDC__未定义。
    }

     

    这些都是gcc的预定义宏(Predefined Macros),应该说这是各编程语言要求的,C++的就比C的稍微多一些。所以不论是gcc还是vc还是sun提供的cc等编译器都会有这些预定义宏的。关于gcc的,大家可以到gcc官方网站上看到:http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html
    __FILE__/__LINE__/__FUNCTION__/__DATE__/__TIME__/__STDC__/__STDC_VERSION__/__STDC_HOSTED__/__cplusplus/__OBJC__/__ASSEMBLER__这些是gcc的标准预定义宏(Standard Predefined Macros),对我们程序员来说都比较有用的,当然我之前的贴子里只用到了__FILE__/__LINE__/__FUNCTION__。
    另外GNU还有一些公用的扩展出来的宏(Common Predefined Macros),比如:__GNUC__/__GNUC_MINOR__/__GNUC_PATCHLEVEL__/__VERSION__等关于gcc版本的宏,另外还有__STRICT_ANSI__/__BASE_FILE__/__INCLUDE_LEVEL__等等一些宏,在gcc官方网站上你可以看到有几十个宏定义(这还不包括那些与系统相关的宏),而且都有明确的说明,我觉得__BASE_FILE__这个宏也比较好,它代码的是你的程序的main函数所在的那个源文件的名称。
    具体到各系统,gcc官方网站明确说明你可以用cpp -dM命令来查看。
    比如,对于上述程序例子,我输入了命令:
    cpp -dM trace.c
    结果得到如下几百个宏,其中大多与系统相关的,比如FILENAME_MAX指明文件明的最大长度:
    #define _POSIX_LOGIN_NAME_MAX 9
    #define __attribute__(xyz)
    #define __restrict
    #define SHRT_MAX 32767
    #define _POSIX_THREAD_THREADS_MAX 64
    #define __FDS_BITS(set) ((set)->__fds_bits)
    #define __USER_LABEL_PREFIX__
    #define NCARGS ARG_MAX
    #define _IO_pos_t _G_fpos_t
    #define _IO_DONT_CLOSE 0100000
    #define __suseconds_t_defined
    #define __USE_POSIX199506 1
    #define isset(a, i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
    #define _G_ssize_t __ssize_t
    #define _IO_SHOWBASE 0200
    #define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
    #define __STRING(x) #x
    #define CLK_TCK ((__clock_t) __sysconf (2))
    #define _WCHAR_T_DEFINED_
    #define __key_t_defined
    #define __SIZE_TYPE__ unsigned int
    #define clrbit(a, i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
    #define _GCC_WCHAR_T
    #define RTSIG_MAX 32
    #define _IOS_OUTPUT 2
    #define CLOCK_PROCESS_CPUTIME_ID 2
    #define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
    #define __volatile volatile
    #define CLOCK_REALTIME 0
    #define NOGROUP (-1)
    #define _G_stat64 stat64
    #define NFDBITS __NFDBITS
    #define _IO_USER_BUF 1
    #define _POSIX2_LINE_MAX 2048
    #define __FDELT(d) ((d) / __NFDBITS)
    #define _SYS_CDEFS_H 1
    #define _STDIO_USES_IOSTREAM
    #define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
    #define P_tmpdir "/tmp"
    #define __LITTLE_ENDIAN 1234
    #define _IO_UPPERCASE 01000
    #define __USE_SVID 1
    #define __WCHAR_T
    #define __inline
    #define setbit(a, i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
    #define __USE_MISC 1
    #define _LIMITS_H 1
    #define _IO_size_t _G_size_t
    #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)
    #define _IO_off_t _G_off_t
    #define PTHREAD_KEYS_MAX 1024
    #define __fsfilcnt_t_defined
    #define __clockid_t_defined 1
    #define __FD_ISSET(d, set) (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d))
    #define _G_size_t size_t
    #define LINE_MAX _POSIX2_LINE_MAX
    #define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d))
    #define _POSIX_MQ_OPEN_MAX 8
    #define __PTRDIFF_TYPE__ int
    #define _IO_LEFT 02
    #define _WCHAR_T
    #define _GCONV_H 1
    #define _G_HAVE_IO_FILE_OPEN 1
    #define _BITS_TYPES_H 1
    #define _POSIX_TZNAME_MAX 6
    #define minor(dev) ((dev).__val[0] & 0xff)
    #define MAX_CANON 255
    #define _G_USING_THUNKS 1
    #define _G_HAVE_LONG_DOUBLE_IO 1
    #define SHRT_MIN (-32767-1)
    #define _IO_wint_t _G_wint_t
    #define _LIMITS_H___
    #define MYFUNC_ONE_H
    #define va_arg __builtin_va_arg
    #define _POSIX_QLIMIT 1
    #define TIMER_MAX 256
    #define _IO_peekc_unlocked(_fp) ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end && __underflow (_fp) == EOF ? EOF : *(unsigned char *) (_fp)->_IO_read_ptr)
    #define _G_HAVE_IO_GETLINE_INFO 1
    #define _IO_UNITBUF 020000
    #define _G_BUFSIZ 8192
    #define _POSIX2_BC_DIM_MAX 2048
    #define _ENDIAN_H 1
    #define BIG_ENDIAN __BIG_ENDIAN
    #define AIO_PRIO_DELTA_MAX 20
    #define _G_NEED_STDARG_H 1
    #define CHILD_MAX 999
    #define RE_DUP_MAX (0x7fff)
    #define __flexarr [1]
    #define __ptrvalue
    #define _POSIX_AIO_MAX 1
    #define __HAVE_BUILTIN_SETJMP__ 1
    #define __stub_fexecve
    #define __BIG_ENDIAN 4321
    #define SEEK_SET 0
    #define __i386 1
    #define SSIZE_MAX INT_MAX
    #define __wchar_t__
    #define __gid_t_defined
    #define _POSIX_OPEN_MAX 16
    #define _WCHAR_T_
    #define __need_clockid_t
    #define LITTLE_ENDIAN __LITTLE_ENDIAN
    #define __va_list__
    #define __USE_POSIX 1
    #define _T_WCHAR
    #define _LIBC_LIMITS_H_ 1
    #define __stub_sigreturn
    #define _IO_cleanup_region_end(_Doit)
    #define _IO_ftrylockfile(_fp)
    #define PATH_MAX 4095
    #define _POSIX_SOURCE 1
    #define _IO_uid_t _G_uid_t
    #define _IO_MAGIC 0xFBAD0000
    #define PDP_ENDIAN __PDP_ENDIAN
    #define powerof2(x) ((((x)-1)&(x))==0)
    #define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
    #define _POSIX_STREAM_MAX 8
    #define _POSIX2_COLL_WEIGHTS_MAX 2
    #define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
    #define __stub_chflags
    #define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
    #define __GLIBC_MINOR__ 2
    #define _IO_NO_READS 4
    #define FILENAME_MAX 4095
    #define __u_char_defined
    #define DEV_BSIZE 512
    #define _IO_getwc_unlocked(_fp) ((_fp)->_wide_data->_IO_read_ptr >= (_fp)->_wide_data->_IO_read_end ? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++)
    #define _ANSI_STDARG_H_
    #define __ELF__ 1
    #define _POSIX2_EXPR_NEST_MAX 32
    #define _IOS_BIN 128
    #define __size_t__
    #define MAX(a, b) (((a)>(b))?(a):(b))
    #define _SIGSET_H_types 1
    #define __stub_fattach
    #define __NFDBITS (8 * sizeof (__fd_mask))
    #define __restrict_arr
    #define __ptr_t void *
    #define PIPE_BUF 4096
    #define __daddr_t_defined
    #define _BSD_SOURCE 1
    #define _IO_putwc_unlocked(_wch, _fp) ((_fp)->_wide_data->_IO_write_ptr >= (_fp)->_wide_data->_IO_write_end ? __woverflow (_fp, _wch) : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch)))
    #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
    #define __unbounded
    #define _IO_INTERNAL 010
    #define _TIME_H 1
    #define __WCHAR_TYPE__ long int
    #define _POSIX_UIO_MAXIOV 16
    #define _PTHREAD_DESCR_DEFINED
    #define TIMER_ABSTIME 1
    #define __KERNEL_STRICT_NAMES
    #define __SIZE_T
    #define __attribute_format_arg__(x)
    #define _IO_fpos_t _G_fpos_t
    #define __NO_INLINE__ 1
    #define _SIZE_T_DEFINED
    #define _IOLBF 1
    #define _IO_BUFSIZ _G_BUFSIZ
    #define __time_t_defined 1
    #define _IO_funlockfile(_fp)
    #define __GNUC_VA_LIST
    #define NULL ((void *)0)
    #define NBBY CHAR_BIT
    #define L_ctermid 9
    #define _IO_PENDING_OUTPUT_COUNT(_fp) ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
    #define _POSIX_SEM_NSEMS_MAX 256
    #define __va_copy(d, s) __builtin_va_copy((d),(s))
    #define ULONG_MAX (LONG_MAX * 2UL + 1)
    #define _G_pid_t __pid_t
    #define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
    #define _VA_LIST
    #define _IO_ssize_t _G_ssize_t
    #define _POSIX_NGROUPS_MAX 0
    #define _POSIX_MAX_INPUT 255
    #define __USE_BSD 1
    #define L_cuserid 9
    #define __stub___kernel_tanl
    #define NOFILE 256
    #define _IO_IS_FILEBUF 0x2000
    #define __WORDSIZE 32
    #define __int8_t_defined
    #define CANBSIZ MAX_CANON
    #define EXEC_PAGESIZE 4096
    #define _IO_LINE_BUF 0x200
    #define _IO_STDIO_H
    #define _SYS_TYPES_H 1
    #define _G_OPEN64 __open64
    #define _T_SIZE
    #define __WINT_TYPE__ unsigned int
    #define MIN(a, b) (((a)<(b))?(a):(b))
    #define __timer_t_defined 1
    #define _LINUX_PARAM_H
    #define _POSIX_SEM_VALUE_MAX 32767
    #define _G_IO_IO_FILE_VERSION 0x20001
    #define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
    #define _PARAMS(protos) __P(protos)
    #define _POSIX_ARG_MAX 4096
    #define __uid_t_defined
    #define __stub_posix_fadvise64
    #define __mbstate_t_defined 1
    #define _POSIX2_BC_STRING_MAX 1000
    #define ARG_MAX 131072
    #define _SIZET_
    #define __GNU_LIBRARY__ 6
    #define _SYS_SELECT_H 1
    #define _BITS_POSIX1_LIM_H 1
    #define _GCC_SIZE_T
    #define __clock_t_defined 1
    #define __GLIBC_PREREQ(maj, min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
    #define _G_LSEEK64 __lseek64
    #define LONG_MAX __LONG_MAX__
    #define __PMT(args) args
    #define EOF (-1)
    #define MAXPATHLEN PATH_MAX
    #define _IO_SHOWPOINT 0400
    #define va_end __builtin_va_end
    #define _IO_CURRENTLY_PUTTING 0x800
    #define DUMP_H
    #define __LONG_LONG_PAIR(HI, LO) LO, HI
    #define NAME_MAX 255
    #define _OLD_STDIO_MAGIC 0xFABC0000
    #define _POSIX_AIO_LISTIO_MAX 2
    #define _G_VTABLE_LABEL_PREFIX_ID __vt_
    #define _IO_flockfile(_fp)
    #define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)
    #define putc(_ch, _fp) _IO_putc (_ch, _fp)
    #define _IO_FIXED 010000
    #define _POSIX_THREAD_KEYS_MAX 128
    #define _IO_off64_t _G_off64_t
    #define __PDP_ENDIAN 3412
    #define _IO_va_list __gnuc_va_list
    #define __LONG_MAX__ 2147483647L
    #define _BITS_WCHAR_H 1
    #define _IO_SHOWPOS 02000
    #define __LONG_LONG_MAX__ 9223372036854775807LL
    #define _WCHAR_T_H
    #define _IOS_ATEND 4
    #define stderr stderr
    #define _IO_TIED_PUT_GET 0x400
    #define __tune_i386__ 1
    #define _POSIX2_BC_BASE_MAX 99
    #define __unix 1
    #define unix 1
    #define stdout stdout
    #define __defined_schedparam 1
    #define _POSIX_TIMER_MAX 32
    #define __P(args) args
    #define _STDIO_H 1
    #define __STDC_IEC_559__ 1
    #define BYTE_ORDER __BYTE_ORDER
    #define __nlink_t_defined
    #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
    #define _IO_NO_WRITES 8
    #define __sigset_t_defined
    #define __UNKNOWN_10646_CHAR ((wchar_t) 0xfffd)
    #define __WCHAR_MAX (2147483647l)
    #define _IONBF 2
    #define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))
    #define _IO_SKIPWS 01
    #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
    #define _STDARG_H
    #define major(dev) (((dev).__val[0] >> 8) & 0xff)
    #define _G_HAVE_MMAP 1
    #define _POSIX_SSIZE_MAX 32767
    #define MAX_INPUT 255
    #define PTHREAD_STACK_MIN 16384
    #define __extension__
    #define LONG_MIN (-LONG_MAX-1)
    #define _G_off_t __off_t
    #define __stub_sstk
    #define _IO_fpos64_t _G_fpos64_t
    #define isclr(a, i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
    #define __FILE_defined 1
    #define _IO_MAGIC_MASK 0xFFFF0000
    #define howmany(x, y) (((x)+((y)-1))/(y))
    #define _IO_iconv_t _G_iconv_t
    #define _POSIX2_CHARCLASS_NAME_MAX 14
    #define _IO_HEX 0100
    #define __signed signed
    #define GLOBAL_H
    #define _SYS_SYSMACROS_H 1
    #define __pid_t_defined
    #define _SIZE_T
    #define FD_SETSIZE __FD_SETSIZE
    #define _IO_cleanup_region_start(_fct, _fp)
    #define _POSIX2_BC_SCALE_MAX 99
    #define _VA_LIST_T_H
    #define _IOS_TRUNC 16
    #define __stub___kernel_cosl
    #define getc(_fp) _IO_getc (_fp)
    #define _IO_UNBUFFERED 2
    #define _ASMi386_PARAM_H
    #define _IO_DELETE_DONT_CLOSE 0x40
    #define makedev(major, minor) { ((((unsigned int) (major)) << 8) | ((unsigned int) (minor))), 0 }
    #define __BIT_TYPES_DEFINED__ 1
    #define FOPEN_MAX 16
    #define __attribute_malloc__
    #define _IO_RIGHT 04
    #define BC_BASE_MAX _POSIX2_BC_BASE_MAX
    #define BC_DIM_MAX _POSIX2_BC_DIM_MAX
    #define _IO_IS_APPENDING 0x1000
    #define __REGISTER_PREFIX__
    #define __mode_t_defined
    #define _WINT_T
    #define _BITS_POSIX2_LIM_H 1
    #define __attribute_pure__
    #define __HAVE_COLUMN
    #define ___int_size_t_h
    #define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp)
    #define _IO_pid_t _G_pid_t
    #define _T_SIZE_
    #define _POSIX_C_SOURCE 199506L
    #define _POSIX_PATH_MAX 256
    #define __STDC_IEC_559_COMPLEX__ 1
    #define __stub___kernel_sinl
    #define __id_t_defined
    #define _G_HAVE_PRINTF_FP 1
    #define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
    #define _G_HAVE_BOOL 1
    #define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
    #define stdin stdin
    #define __stub_stty
    #define _G_HAVE_SYS_WAIT 1
    #define SCHAR_MAX 127
    #define __ssize_t_defined
    #define _IOS_NOCREATE 32
    #define UCHAR_MAX 255
    #define _POSIX2_RE_DUP_MAX 255
    #define __STDC_ISO_10646__ 200009L
    #define _POSIX_MQ_PRIO_MAX 32
    #define _G_NAMES_HAVE_UNDERSCORE 0
    #define _IO_DEC 020
    #define _G_VTABLE_LABEL_HAS_LENGTH 1
    #define _SIZE_T_
    #define _IO_EOF_SEEN 0x10
    #define va_copy(d, s) __builtin_va_copy((d),(s))
    #define __linux 1
    #define _SIZE_T_DEFINED_
    #define _IO_putc_unlocked(_ch, _fp) (((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) ? __overflow (_fp, (unsigned char) (_ch)) : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
    #define _STRUCT_TIMEVAL 1
    #define _G_va_list __gnuc_va_list
    #define _POSIX_DELAYTIMER_MAX 32
    #define _MACH_MACHLIMITS_H_
    #define _G_ARGS(ARGLIST) ARGLIST
    #define MAXSYMLINKS 20
    #define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
    #define _POSIX_SIGQUEUE_MAX 32
    #define _POSIX_PIPE_BUF 512
    #define __GLIBC__ 2
    #define i386 1
    #define __BYTE_ORDER __LITTLE_ENDIAN
    #define __const const
    #define _SVID_SOURCE 1
    #define __END_DECLS
    #define CHAR_MAX 127
    #define _IOFBF 0
    #define _G_HAVE_ATEXIT 1
    #define __GNUC_PREREQ(maj, min) 0
    #define MYFUNC_TWO_H
    #define _IO_LINKED 0x80
    #define _VA_LIST_DEFINED
    #define _IO_OCT 040
    #define _SYS_SIZE_T_H
    #define _IO_getc_unlocked(_fp) ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
    #define __linux__ 1
    #define __USE_ANSI 1
    #define __CONCAT(x, y) x ## y
    #define __VERSION__ "2.96 20000731 (Red Hat Linux 7.1 2.96-98)"
    #define _BITS_PTHREADTYPES_H 1
    #define __FD_ZERO(set) do { unsigned int __i; fd_set *__arr = (set); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)
    #define __USE_POSIX2 1
    #define NGROUPS 32
    #define __BEGIN_DECLS
    #define __blkcnt_t_defined
    #define NGROUPS_MAX 32
    #define __stub_fchflags
    #define __size_t
    #define _G_wchar_t wchar_t
    #define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
    #define MAXHOSTNAMELEN 64
    #define _G_FSTAT64(fd, buf) __fxstat64 (_STAT_VER, fd, buf)
    #define _IOS_APPEND 8
    #define _IO_BAD_SEEN 0x4000
    #define SCHAR_MIN (-128)
    #define __off_t_defined
    #define L_tmpnam 20
    #define _T_WCHAR_
    #define __ino_t_defined
    #define INT_MAX __INT_MAX__
    #define BC_STRING_MAX _POSIX2_BC_STRING_MAX
    #define __USE_POSIX199309 1
    #define MB_LEN_MAX 16
    #define CHAR_BIT 8
    #define __FD_SETSIZE 1024
    #define __attribute_format_strfmon__(a, b)
    #define BUFSIZ _IO_BUFSIZ
    #define _POSIX_RTSIG_MAX 8
    #define _IO_BOOLALPHA 0200000
    #define _LINUX_LIMITS_H
    #define _IO_file_flags _flags
    #define _G_VTABLE_LABEL_PREFIX "__vt_"
    #define __stub_revoke
    #define _BITS_TIME_H 1
    #define __INT_MAX__ 2147483647
    #define PTHREAD_THREADS_MAX 1024
    #define _G_off64_t __off64_t
    #define ___int_wchar_t_h
    #define _IO_USER_LOCK 0x8000
    #define __fsblkcnt_t_defined
    #define _IO_UNIFIED_JUMPTABLES 1
    #define __stub_posix_fadvise
    #define _VA_LIST_
    #define _POSIX_HIWAT _POSIX_PIPE_BUF
    #define va_start(v, l) __builtin_stdarg_start((v),l)
    #define _IOS_NOREPLACE 64
    #define __dev_t_defined
    #define _POSIX_LINK_MAX 8
    #define _IOS_INPUT 1
    #define UINT_MAX (INT_MAX * 2U + 1)
    #define HZ 100
    #define __timespec_defined 1
    #define _FEATURES_H 1
    #define CHAR_MIN (-128)
    #define __stub_gtty
    #define _POSIX_TTY_NAME_MAX 9
    #define __i386__ 1
    #define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
    #define __stub_setlogin
    #define SEEK_CUR 1
    #define __INT_WCHAR_T_H
    #define _IO_IN_BACKUP 0x100
    #define linux 1
    #define _POSIX_NAME_MAX 14
    #define dump(fp, x...)
    #define __WCHAR_MIN (-2147483647l - 1l)
    #define _IO_ERR_SEEN 0x20
    #define CLOCKS_PER_SEC 1000000l
    #define TMP_MAX 238328
    #define USHRT_MAX 65535
    #define _POSIX_CLOCKRES_MIN 20000000
    #define _POSIX_MAX_CANON 255
    #define _G_uid_t __uid_t
    #define _G_wint_t wint_t
    #define __THROW
    #define _WCHAR_T_DEFINED
    #define INT_MIN (-INT_MAX-1)
    #define _SYS_PARAM_H 1
    #define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp)
    #define _IO_SCIENTIFIC 04000
    #define __FLOAT_WORD_ORDER __BYTE_ORDER
    #define ____FILE_defined 1
    #define __unix__ 1
    #define COLL_WEIGHTS_MAX 255
    #define CHARCLASS_NAME_MAX 2048
    #define _BSD_SIZE_T_
    #define _GCC_LIMITS_H_
    #define __bounded
    #define __long_double_t long double
    #define SEEK_END 2
    #define _POSIX_CHILD_MAX 6
    #define _G_HAVE_SYS_CDEFS 1
    #define __stub_fdetach
    #define _IO_STDIO 040000
    #define _G_config_h 1
    #define CLOCK_THREAD_CPUTIME_ID 3
    #define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
    #define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT

    展开全文
  • ANSI标准说明了五个预定义的宏名。...__LINE__ 是内置,代表该行代码的所在行号 __DATE__指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。 源代码翻译到目标代码的时间作为串包含在__TIME_
    ANSI标准说明了五个预定义的宏名。它们是:
    
    __LINE__
    __FILE__
    __DATE__
    __TIME__

    __STDC__


    __FILE__ 是内置宏 代表源文件的文件名
    __LINE__ 是内置宏,代表该行代码的所在行号
    __DATE__宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。
    源代码翻译到目标代码的时间作为串包含在__TIME__ 中。串形式为时:分:秒。
    如果实现是标准的,则宏__STDC__含有十进制常量1。如果它含有任何其它数,则实现是非标准的。



    示例代码:(打印源程序名,行号,时间及日期)

    #include <stdio.h>
     
    int main( int argc,char const *argv[] )
    {
        printf("%s:%d\n",__FILE__,__LINE__);
        printf("%s,%s\n",__DATE__,__TIME__);
        return 0;
    }





    展开全文
  • C/C++提供了三个宏__FUNCTION__,__FILE__和__LINE__用于定位程序运行时发生错误的位置。 程序预编译时预编译器将用所在的函数名,文件名和行号替换。 当运行时错误产生后这三个宏分别能返回错误所在的函数,所在的...

    C/C++提供了三个宏__FUNCTION__,__FILE__和__LINE__用于定位程序运行时发生错误的位置。

    程序预编译时预编译器将用所在的函数名,文件名和行号替换。

    当运行时错误产生后这三个宏分别能返回错误所在的函数,所在的文件名和所在的行号。

    //位于C:\test\下 
    #include <stdio.h>
     
    int main(int, char**)
    {
        printf("%s:This fake error is in \"%s\" on line %d.\n", __FUNCTION__, ___FILE___, ___LINE___);
        return 0;
    }
    //运行结果
    main: This fake error is in "C:\test\test.cpp" on line 6.
    
    展开全文
  • __FILE__,__LINE__   前言: 我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句...
  • Linux几个调试宏__FUNCTION__ __TIME__ __LINE__ __FILE__ __DATA__ 这几个宏是编译器内置的,不是在哪个头文件中包含的 直接上最简单的例子就好了,没必要多说。 源码: #include int main() { ...
  •  3) __LINE__在预编译时会替换成当前的行号  4) __FUNCTION__在预编译时会替换成当前的函数名称  有了以上这几个,特别是有了__VA_ARGS__ ,调试信息的输出就变得灵活多了。  有时,我们想把调试...
  • Linux几个调试宏__FUNCTION__ __TIME__ __LINE__ __FILE__ __DATA__ 这几个宏是编译器内置的,不是在哪个头文件中包含的 直接上最简单的例子就好了,没必要多说。 源码: #include int main() { ...
  • 概述 __DATE__ :表示当前日期的字符串,格式为month/day/year(月/日/年). ...__LINE__ :表示正在处理的当前行号 __FUNCTION__ :表示正在处理的函数名 __STDC__:表示编译器是否遵循ANSI C标准,若果是,...
  • 在C/C++中一些可以用来帮助调试或输入到 log 中,本文将整理一些常见的。 一、用例测试环境 整篇文章测试用例使用到的环境如下,并不是说一定要在如下环境中才有效,只是指明下本文的测试用例环境。 系统...
  • 今天在以前的项目中看到几个从来没有见过__VA_ARGS__、__FILE__、__FUNCTION__、__LINE__,后来查询了下,原来是C++的,工作一年了,竟然连C++自带的几个定义都不认识,惭愧啊!  废话不多说了,现在来逐一介绍...
  • __FILE__,__LINE__,FUNCTION__的

    千次阅读 2009-11-08 23:05:00
    转载http://www.cnitblog.com/zouzheng/archive/2007/08/31/32691.html__FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)__FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )先看下...
  • C语言中__FILE__ 和__LINE__ 等的含义

    千次阅读 2010-08-31 16:19:00
    int main(int argc, ... printf( "file=%s/nline=%s ",__FILE__,__LINE__); return (0); } 另外,__FILE__和__LINE__是C语言中的预定义宏。 在 C99 标准的 6.10.8 
  • #define DEBUG(format,...) printf("File: "__FILE__", Line: %05d: "format"/n", __LINE__, ##__VA_ARGS__) int main() { DEBUG( "当前源代码函数名:__FUNCTION__ = %s \n" , __FUNCTION_ _ ); DEBUG( ...
  • C标准中指定了一些预定义的,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 __...
  • 当然定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。 下面列举一些成熟软件中常用得定义 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 … #endif ...
  •  在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难。... 下面定义了,分别是WARNING,INFO,ERROR,SHOW_TIME,DEBUG等。利用了 __FILE__,_FUNCTION__, __LINE__等变量。。。  _FILE__,
  • 其名称分别为 :__FILE__,__FUNCTION _,__LINE__,__DATE__,__TIME__。 其含义如下: __FILE__: 记录文件的路径加名称 __FUNCTION __:当前所在函数名 __LINE__: 记录文件已经被编译的行数 __DATE__: 记录文件的编译...
  • ANSI C标准中有几个标准预定义宏(也是常用的): ...__LINE__:在源代码中插入当前源代码行号; __FUNCTION__:在源代码中插入当前所在函数名称; __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1; __...
  • 当然定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。 下面列举一些成熟软件中常用得定义 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 ...
  • 测试代码: //testout.c #include void main() { printf("... cur line : %d, gcc version: %s, base file: %s, date: %s, time: %s\n", __FILE__, __func__, __LINE__, __VERSION__,...
  • __LINE__:当前源代码的行号 __FILE__:当前源文件的文件名 __DATE__:当前编译日期 __TIME__:当前编译时间 __STDC__:是否符合ANSI标准 备注:定义的左右都有两个下划线 做个试验,用GCC工具将上面的打印...
  • Linux几个调试宏__FUNCTION__ __TIME__ __LINE__ __FILE__ __DATA__这几个宏是编译器内置的,不是在哪个头文件中包含的直接上最简单的例子就好了,没必要多说。源码:[cpp] view plain copy#include &lt;...
  • 一般情况下,C/C++编译器会内置几个,这些定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以输出非常有用的调试信息。ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入...
  • C/C++编译器会内置几个,这些定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。 ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,546
精华内容 31,418
热门标签
关键字:

__line__宏