全局变量可以在不同层(不同工程)之间使用吗? 回调函数呢?
全局变量可以在不同层(不同工程)之间使用吗? 回调函数呢?
请教一个问题,不知道能不能实现:
我把问题抽象化,给大家讲讲:
1. 现在有一个比较复杂的程序,包括三个部分:
a. 最底层调用了CppUnit 库进行测试
b. 然后上面封装了一层UI, 做了一个用户界面,可以使用此界面控制底层的测试
以及输出测试报告
c. 最上面编写了测试用例,编译后可以被加载到图形界面工具中,进行测试
2. 现在的问题是需要在最后的报告中输出一段字符串,解释整个测试的目的及详细
信息。这段字符串是在测试用例的头文件中声明定义的。无法修改 c. 测试用例部
分的代码,因为这部分的API定下来了(原来有许多测试用例已经这么写了,无法
改动这上千个测试用例部分的代码)
3. 我的想法是在CppUnit最底层的地方某个宏定义中记录下输出的字符串。因为每次
要输出信息时测试用例头文件里就要调用此宏来输出信息。
问题是:有没有这么定义全局变量的? 在最底层定义一个全局变量来存储字符串,
在UI生成报告时加上存储的字符串,然后输出到报告?
或者有什么别的方法,比如回调函数等等。哪里可以找到回调函数的示例呢?想参考
一下,网上关于回调函数众说纷纭,请大家帮忙!
/// a. 最底层宏定义,输出std::string anStr(info); 的字符串
#define BEGIN_PRINTDOC \
private: \
static void print_doc() \
{
////////////////////////////////////////////////////////////////////////
#define PRINTDOC(info){ \
std::string anStr(info); \
CPPUNIT::MyListener::myInstance()->addInfo( "PRINTDOC", anStr.c_str()); \
}
////////////////////////////////////////////////////////////////////////
#define END_PRINTDOC \
} \
public:
/// c. 测试用例头文件中,用到上面的宏,却无法输出信息,因为此时还没有注册CppUnit
/// 的测试。注册CppUnit的测试在测试用例的cpp文件里,不在头文件中。
/// 如果把以下宏加到.cpp文件中输出信息就一点问题都没有,可是此测试用例头文件又
/// 不能改动!
class SampleTestCase : public CPPUNIT::TestFixture
{
BEGIN_PRINTDOC
PRINTDOC("doucumentation infomation");
END_PRINTDOC
.......................
}
请教一个问题,不知道能不能实现:
我把问题抽象化,给大家讲讲:
1. 现在有一个比较复杂的程序,包括三个部分:
a. 最底层调用了CppUnit 库进行测试
b. 然后上面封装了一层UI, 做了一个用户界面,可以使用此界面控制底层的测试
以及输出测试报告
c. 最上面编写了测试用例,编译后可以被加载到图形界面工具中,进行测试
2. 现在的问题是需要在最后的报告中输出一段字符串,解释整个测试的目的及详细
信息。这段字符串是在测试用例的头文件中声明定义的。无法修改 c. 测试用例部
分的代码,因为这部分的API定下来了(原来有许多测试用例已经这么写了,无法
改动这上千个测试用例部分的代码)
3. 我的想法是在CppUnit最底层的地方某个宏定义中记录下输出的字符串。因为每次
要输出信息时测试用例头文件里就要调用此宏来输出信息。
问题是:有没有这么定义全局变量的? 在最底层定义一个全局变量来存储字符串,
在UI生成报告时加上存储的字符串,然后输出到报告?
或者有什么别的方法,比如回调函数等等。哪里可以找到回调函数的示例呢?想参考
一下,网上关于回调函数众说纷纭,请大家帮忙!
/// a. 最底层宏定义,输出std::string anStr(info); 的字符串
#define BEGIN_PRINTDOC \
private: \
static void print_doc() \
{
////////////////////////////////////////////////////////////////////////
#define PRINTDOC(info){ \
std::string anStr(info); \
CPPUNIT::MyListener::myInstance()->addInfo( "PRINTDOC", anStr.c_str()); \
}
////////////////////////////////////////////////////////////////////////
#define END_PRINTDOC \
} \
public:
/// c. 测试用例头文件中,用到上面的宏,却无法输出信息,因为此时还没有注册CppUnit
/// 的测试。注册CppUnit的测试在测试用例的cpp文件里,不在头文件中。
/// 如果把以下宏加到.cpp文件中输出信息就一点问题都没有,可是此测试用例头文件又
/// 不能改动!
class SampleTestCase : public CPPUNIT::TestFixture
{
BEGIN_PRINTDOC
PRINTDOC("doucumentation infomation");
END_PRINTDOC
.......................
}
...全文
相关推荐
Ajax获取回调函数无法赋值给全局变量的问题
比如我在别的方法想使用getTree执行后的到的值 var data=getTree( ); 然后我发现怎么赋值都是没有数据 通过调试发现总是先弹出data1再弹出回调函数里面的data 因为它还没等ajax执行完就已经继续执行下面的代码 解决方法 1.在回调函数里面进行数据操作 2.将异步改成同步 总结 以上所述是小编给大家介绍的Ajax获取回调函数无法赋值给全局变量的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持! 您可能感兴趣的文章:jQuery Ajax
C++中类使用全局变量
在C++中,声明一个类,并且定义一个全局变量,练习全局变量的使用。注意全局变量的使用技巧和方法。
js回调函数
理解JavaScript的闭包是迈向高级JS程序员的必经之路, 理解了其解释和运行机制才能写出更为安全和优雅的代码。
全局变量的使用
extern全局变量的使用,简单的写了一下
Sublime Text 3 搭建Python开发环境
一、插件安装方法直接安装:下载插件安装包到Packages目录(Preference->Packages)使用Package Control插件安装:(1)安装Package Control插件: 按 ctrl + 调出Console,粘贴以下代码并回车:import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442'


