开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
在Programming版问了如何trace code的开始与结束的时候
版上大大提供
宣告一个物件 建构子的时候印出开始符号 解构子的时候印出结束符号
进function就宣告此物件
在BCB测试顺利
在VC下 建构子一呼叫完解构子就被呼叫
预期的正确结果(Expected Output):
line1 (表示开始)
line2 (表示function内容)
line3 (表示结束)
错误结果(Wrong Output):
line1
line3
line2
line3
程式码(Code):(请善用置底文网页, 记得排版)
.h
#include <iostream>
using namespace std;
struct BEGINEND
{
public:
BEGINEND(char* file, int line, wstring str);
~BEGINEND(void);
private:
char *file_;
int line_;
wstring str_;
};
=========================================================
.cpp
#include "stdafx.h"
#include "test.h"
#include <iostream>
using namespace std;
BEGINEND::BEGINEND(char* file, int line, wstring str)
{
void* ptr;
ptr = this;
file_ = file;
line_ = line;
str_ = str;
{
cout << "line1" << endl;
}
}
BEGINEND::~BEGINEND(void)
{
void* ptr;
ptr = this;
cout << "line3" << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
BEGINEND be = BEGINEND(__FILE__, __LINE__, L"haha");
cout << "line2" << endl;
return 0;
}
补充说明(Supplement):
错误输出的情况我有试着把this印出
结果
line1
line3
lien2
line3
红色两行的this与绿色行的this不同个
想请教一下这情况是哪边出问题了呢
谢谢