|
Packit Service |
8bf002 |
/* n_18.c: #define directive. */
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
#include "defs.h"
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
main( void)
|
|
Packit Service |
8bf002 |
{
|
|
Packit Service |
8bf002 |
int c = 3;
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
/* Excerpts from ISO C 6.8.3 "Examples". */
|
|
Packit Service |
8bf002 |
#define OBJ_LIKE (1-1)
|
|
Packit Service |
8bf002 |
#define FTN_LIKE(a) ( a )
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
fputs( "started\n", stderr);
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
/* 18.1: Definition of an object-like macro. */
|
|
Packit Service |
8bf002 |
assert( OBJ_LIKE == 0);
|
|
Packit Service |
8bf002 |
#define ZERO_TOKEN
|
|
Packit Service |
8bf002 |
#ifndef ZERO_TOKEN
|
|
Packit Service |
8bf002 |
fputs( "Can't define macro to 0-token.\n", stderr);
|
|
Packit Service |
8bf002 |
exit( 1);
|
|
Packit Service |
8bf002 |
#endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
/* 18.2: Definition of a function-like macro. */
|
|
Packit Service |
8bf002 |
assert( FTN_LIKE( c) == 3);
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
/* 18.3: Spelling in string identical to parameter is not a parameter. */
|
|
Packit Service |
8bf002 |
#define STR( n1, n2) "n1:n2"
|
|
Packit Service |
8bf002 |
assert( strcmp( STR( 1, 2), "n1:n2") == 0);
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
fputs( "success\n", stderr);
|
|
Packit Service |
8bf002 |
return 0;
|
|
Packit Service |
8bf002 |
}
|
|
Packit Service |
8bf002 |
|