我改变了代码风格,我希望它能帮助 http://www.cs.bell-labs.com/cm/cs/pearls/spacemod.cpp
#include <iostream>
using namespace std;
#define MEASURE(T, text)
{ \
int i;
cout<<text<<"\t"; \
cout<<sizeof(T)<<"\t"; \
int lastp=0;\
for ( i=0;i<11;i++){ \
T *p=new T; \
int thisp=(int)p; \
if (lastp!=0) cout<<" "<<thisp-lastp; \
lastp=thisp; \
} \
cout<<"n";\
} \
using namespace std;
template <class T>
void measure(char *text)
{
cout<<"measure"<<text<<"\t";
cout<<sizeof(T)<<"\n";
}
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它只有一个错误
1>c:\users\david\documents\visual studio 2010\projects\measure\measure.cpp(5): error C2447: '{' : missing function header (old-style formal list?)
Run Code Online (Sandbox Code Playgroud)
我很确定你需要一个\最后#define一行本身以及int i;该宏中可能还有空行(我不确定).
我怀疑在\你的using陈述之前的那一行也是狡猾的.
但是,我绝对肯定的一点是,使用内联函数比使用#define宏更好.
虽然inline不能保证它实际上是内联的,但我总是倾向于优化编译器.
和代码宏,我在C++中非常重视,特别是对于像这样的复杂事情:-)
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |