问题:
假如函数A(char* pcTemp),
函数内部int y= * (int * )pcTemp;
外部使用,int x=1;A(x);
1、那么y是多少,是1还是一个不可预知的奇数?
2、不同的交叉编译链结果会有区别吗?
3、不同位数的系统,结果会不同吗?
4、假如把函数入参改成void * pcTemp,结果会不一样吗?
你这样写根本不能编译,虽然我可以修改成可以编译的代码,但是需要加上各种强制转换,那么结果取决于我怎么修改,而我不知道你的意图。
#include <stdio.h>
void A(char* pcTemp)
{
int y=(int)pcTemp;
printf("%d", y);
}
int main()
{
int x=1;
A(x);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话://a.cpp文件
#include"a.h"
void func(int a,int b)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
template<class T>
T Add(const T& left, const T& right)
{
return left + right;
}
//显示告诉编译器应该实例化成什么类型,这样.cpp的文件就可以实例化,也可以找到地址了
template
int Add<int>(const int& left, const int& right);
template
double Add<double>(const double& left, const double& right);
直接显示地告诉编译器,要实例化成什么类型,但是这样就会显得很麻烦。