在函数模板里进行宏替换出先错误
#include<iostream.h>
#define A(x) sizeof(x)/sizeof(*x)
template <class T>
void fun(T *B);
template <class T>
void fun(T *B)
{
T t;
cout<<A(B);/*输出的是1*/
for(int i=0;i<A(B);i++)
for(int j=0;j<A(B)-i;j++)
if(B[j]>B[j+1])
{
t=B[j];B[j]=B[j+1];B[j+1]=t;
}
}
main()
{
int a[]={1,2,3,5,8,4,1,9};
fun(a);
cout<<A(a);/*输出8*/
}
为什么?