我目前正在开发一个项目,其中包含一些旧的记录错误的代码,并且我正在尝试浏览各种.h文件,他们提供了有关使用所有函数的完整文档(定义是持有的)在.lib和.dll文件中)。其中一个.h文件的函数不仅是声明的,而是用简单的return语句或空语句定义的
class DLL ExampleLibraryClass {
public:
int exampleGetValue() {return 0;}
void exampleSetValue(Type val) {;}
void exampleActionFxn() {;}
};
这些函数我希望返回当前变量状态或执行某些操作,这就是为什么这让我感到困惑。
此外:
我使用了Dependency Walker,发现每个函数在dll中都有匹配的定义。
关键字DLL已使用
定义#ifndef _PWSDLL_
# define _PWSDLL_
# define WINCALL _stdcall
# ifdef _USRDLL
# define DLL __declspec(dllexport)
# else
# define DLL __declspec(dllimport)
# endif
#endif
_USRDLL未定义,因此DLL
定义为__declspec(dllimport)
我的问题不再是关于空定义的明显效果(我没有做任何事情,并且已经在SO上进行过讨论)以及更多关于为何以这种方式编写.h文件以及如何利用该文件的问题。这是一种常见的还是已知的做法?链接器是否仍会在链接库中查找函数的定义?还有其他代码片段我应该寻找更多线索吗?或者在最广泛的意义上,我该如何回应呢?
非常感谢,如果您需要更多信息来解决这个问题,请告诉我,我不确定在这件事情中究竟有什么重要。
编辑:在示例代码中添加了遗忘的返回类型。
编辑:添加了有关DLL定义的说明。
答案 0 :(得分:0)
将此代码用于某些用途的一种情况是覆盖这些函数。这些函数包含一些默认代码,可以在以后重写。