-
[C언어] 함수퍼인터를 사용해서 자기스스로 환경을 비교Programming/C 언어 2008. 10. 30. 10:19
#include <iostream>
using namespace std;
// ForWindows9x() 나 ForWindowsNT()를 가르킬수있는 포인터타입 정의
typedef void (*SYSTEM_FUNC)();
void ForWindows9x();
void ForWindowsNT();
bool IsWindows9x();
void ImportantFunc(SYSTEM_FUNC pfnSyst);
int main()
{
// 함수포인터 변수
SYSTEM_FUNC pfn;
// 시스템 버전에 따라서 알맞은 함수를 가리키게 만든다
if(IsWindows9x())
{
pfn = &ForWindows9x;
}
else
{
pfn = &ForWindowsNT;
}
// 중요한 함수호출 함수주소를 넘겨준다
ImportantFunc(pfn);
return 0;
}
void ForWindows9x()
{
cout << "Windows 9x용 함수가 호출됨\n";
}
void ForWindowsNT()
{
cout << "Windows NT/2000/XP 용 함수가 호출됨\n";
}
bool IsWindows9x()
{
return false;
}
// 중요한함수 호출해야할 함수의 포인터를 인자로 받는다
void ImportantFunc(SYSTEM_FUNC pfnSyst)
{
(*pfnSyst) ();
}