Advertisement
KanjiCoder

BAD_FUNCTION_POINTER.C11

Nov 24th, 2022
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1.  
  2.     #include <stdint.h>
  3.     #include <stdio.h>
  4.    
  5.     typedef void     ( any_func )(    void        );
  6.     typedef uint32_t ( u32_func )( uint32_t a );
  7.     typedef uint64_t ( u64_func )( uint64_t a );
  8.    
  9.     uint32_t imp_u32_func(
  10.    
  11.         uint32_t a
  12.     ){
  13.         return( a );
  14.     }
  15.    
  16.     uint64_t imp_u64_func(
  17.    
  18.         uint64_t a
  19.     ){
  20.         return( a );
  21.     }
  22.    
  23.     u32_func* ptr_u32_func = (u32_func*)(any_func*)&( imp_u64_func );
  24.     u64_func* ptr_u64_func = (u64_func*)(any_func*)&( imp_u32_func );
  25.    
  26.     int main( void ){
  27.    
  28.         printf("[hello_world]\n");
  29.        
  30.         uint64_t big =( 0xFFFFFFFFFFFFFFFF );
  31.         uint32_t lit =( 0xFFFFFFFF         );
  32.        
  33.         uint64_t v64     ;
  34.         uint32_t v32     ;
  35.         uint64_t v64_too ;
  36.        
  37.         v64    =( ptr_u64_func( big ) );
  38.         v32    =( ptr_u32_func( lit ) );
  39.         v64_too=( ptr_u64_func( big ) );
  40.        
  41.         printf( "[big]:::::%llu\n", big     );
  42.         printf( "[lit]:::::%u\n"  , lit     );
  43.        
  44.         printf( "[v64]:::::%llu\n", v64     );
  45.         printf( "[v32]:::::%u\n"  , v32     );
  46.         printf( "[v64_too]:%llu\n", v64_too );
  47.        
  48.     }
  49.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement