强制内联,不内联,#pragma function/#pragma intrinsic似乎并不起作用
如题 ,#pragma intrinsic(memcpy) ,对标准库函数处理行很好,但对私人函数,就无效了
extern "C"
int f1(int a){ return __LINE__; }
extern "C"
int f2(int a)
{
char c[100];
do
{
a += a--;
} while (a =0);
sprintf(c, "%d\n", a);
printf(c);
return strlen(c);
}
extern "C"
int f3(int a)
{
char c[100];
do
{
a += a++;
} while (a =0);
sprintf(c, "%d\n", a);
printf(c);
return strlen(c) +f2(a) +f2(a) +f2(a) +f2(a) +f2(a) +f2(a) ;
}
#pragma intrinsic(memcpy) // OK
#pragma intrinsic(f3) // warning C4163: “f3”: 不可用作内部函数 ??
#pragma function(f2) // warning C4163:
#pragma function(f1) // warning C4163:
int a, b;
int _tmain(int argc, _TCHAR* argv[])
{
memcpy(&a, &b, 4); // OK
std::cout << a << "\n";
std::cout << f1(100) << "\n"; // 不想内联,结果内联
std::cout << f2(100) << "\n"; // 不想内联,结果内联
std::cout << f3(100) << "\n"; // 想内联,结果不内联
getchar();
return 0;
}