Microsoft KB Archive/35295

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Getting the Address of a Function with FP_SEG and FP_OFF

Q35295

5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a | 1.00 MS-DOS | OS/2 | WINDOWS kbprg kbcode ---------------------------------------------------------------------- The information in this article applies to: - The C Run-time (CRT), included with: - Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, and 6.0ax - Microsoft C for OS/2, versions 5.1, 6.0, and 6.0a - Microsoft C/C++ for MS-DOS, version 7.0 - Microsoft Visual C++ for Windows, version 1.0 ---------------------------------------------------------------------- SUMMARY ======= In Microsoft C versions 5.0, 5.1, 6.0, 6.0a, 6.0ax, C/C++ version 7.0, and Visual C++ 1.0, to get the segment and offset of a function named myfunc, declare a pointer to a function, assign myfunc to that pointer, and use FP_SEG and FP_OFF to get the segment and offset from the pointer. MORE INFORMATION ================ If the sample program below is compiled for the tiny, small or compact memory models, the segment value will be zero. This is because in these memory models a function pointer is a near (offset only) pointer. The following sample code demonstrates this process: Sample Code ----------- /* Compile options needed: none */ #include #include int myfunc( void ); int (*myfunc_ptr)(); unsigned int seg_val; unsigned int off_val; void main( ) { /* set the pointer to the function */ myfunc_ptr = myfunc; /* use FP_SEG() and FP_OFF() to get segment and offset */ seg_val = FP_SEG(myfunc_ptr); off_val = FP_OFF(myfunc_ptr); printf( "Segment is %d\nOffset is %d\n", seg_val, off_val ); } int myfunc() { } Additional reference words: kbinf 5.10 6.00 6.00a 6.00ax 7.00 1.00 KBCategory: kbprg kbcode KBSubcategory: CRTIss

Keywords : kb16bitonly
Issue type :
Technology : kbVCsearch kbAudDeveloper kbCRT


Last Reviewed: May 5, 2001
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.