在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
/* * brief: genericity programming * */ #include <stdio.h> #include <stdlib.h> #include <assert.h> #define GENERIC_STACK( STACK_TYPE, SUFFIX, STACK_SIZE ) \ \ static STACK_TYPE stack##SUFFIX[ STACK_SIZE ]; \ static int top_element##SUFFIX = -1; \ \ int \ is_empty##SUFFIX( void ) \ { \ return top_element##SUFFIX == -1; \ } \ \ int \ is_full##SUFFIX( void ) \ { \ return top_element##SUFFIX == STACK_SIZE - 1; \ } \ \ void \ push##SUFFIX( STACK_TYPE value ) \ { \ assert( !is_full##SUFFIX() ); \ top_element##SUFFIX += 1; \ stack##SUFFIX[ top_element##SUFFIX ] = value; \ } \ void \ pop##SUFFIX( void ) \ { \ assert( !is_empty##SUFFIX() ); \ top_element##SUFFIX -= 1; \ } \ STACK_TYPE \ top##SUFFIX( void ) \ { \ assert( !is_empty##SUFFIX() ); \ return stack##SUFFIX[ top_element##SUFFIX ]; \ } GENERIC_STACK( int, _int, 10 ) /* GENERIC_STACK( float, _float, 5 ) */ GENERIC_STACK( int, _int1, 10 ) int main() { push_int( 5 ); push_int( 22 ); push_int( 15 ); push_int1( 4 ); push_int1( 23 ); push_int1( 16 ); /*push_float( 25.3 ); push_float( -40.5 );*/ while ( !is_empty_int() ) { printf( "Popping %d\n", top_int() ); pop_int(); } while ( !is_empty_int1() ) { printf( "Popping %d\n", top_int1() ); pop_int1(); } /* while ( !is_empty_float() ) { printf( "Popping %f\n", top_float() ); pop_float(); }*/ exit(0); }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论