Files correlati : Commento : Aggiunto il preprocessore c++ mcpp per sostituire il compilatore nella compilazione delle maschere.
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Raku
		
	
	
	
	
	
/*
 | 
						|
 *      e_std99.t
 | 
						|
 *
 | 
						|
 * 2002/08      made public                                     kmatsui
 | 
						|
 * 2003/11      added a few samples                             kmatsui
 | 
						|
 *
 | 
						|
 * Samples to test Standard C99 preprocessing.
 | 
						|
 * C99 preprocessor must diagnose all of these samples appropriately.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
/* e_ucn.t:     Errors of Universal-character-name sequense.    */
 | 
						|
 | 
						|
#define macro\U0000001F     violation of constraint
 | 
						|
#define macro\uD800         violation of constraint (only C, not for C++)
 | 
						|
#define macro\u123          too short sequence (violation of syntax rule)
 | 
						|
#define macro\U1234567      also too short sequence
 | 
						|
 | 
						|
 | 
						|
/* e_intmax.t:  Overflow of constant expression in #if directive.    */
 | 
						|
 | 
						|
#include    <stdint.h>
 | 
						|
 | 
						|
#if     INTMAX_MAX - INTMAX_MIN
 | 
						|
#endif
 | 
						|
#if     INTMAX_MAX + 1
 | 
						|
#endif
 | 
						|
#if     INTMAX_MIN - 1
 | 
						|
#endif
 | 
						|
#if     INTMAX_MAX * 2
 | 
						|
#endif
 | 
						|
 | 
						|
#include	<limits.h>
 | 
						|
 | 
						|
#if     LLONG_MAX - LLONG_MIN
 | 
						|
#endif
 | 
						|
#if     LLONG_MAX + 1
 | 
						|
#endif
 | 
						|
#if     LLONG_MIN - 1
 | 
						|
#endif
 | 
						|
#if     LLONG_MAX * 2
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
/* e_pragma.t:  Erroneous use of _Pragma() operator */
 | 
						|
        /* Operand of _Pragma() should be a string literal  */
 | 
						|
    _Pragma( This is not a string literal)
 | 
						|
 | 
						|
 | 
						|
/* e_vargs1.t:  Erroneous usage of __VA_ARGS__  */
 | 
						|
 | 
						|
/* __VA_ARGS__ should not be defined.   */
 | 
						|
    #define __VA_ARGS__ (x, y, z)
 | 
						|
 | 
						|
/*
 | 
						|
 * __VA_ARGS__ should be the parameter name in replacement list
 | 
						|
 * corresponding to '...'.
 | 
						|
 */
 | 
						|
    #define wrong_macro( a, b, __VA_ARGS__) (a + b - __VA_ARGS__)
 | 
						|
 | 
						|
 | 
						|
/* e_vargs2.t:  Erroneous macro invocation of variable arguments    */
 | 
						|
    #define debug( ...) fprintf( stderr, __VA_ARGS__)
 | 
						|
        /* No argument to correspond __VA_ARGS__    */
 | 
						|
    debug();
 | 
						|
 |