库的 .h 文件中出现“{return 0;}”或“{;}”的原因
Reason for "{return 0;}" or "{;}" in library's .h file
我目前正在处理一个项目,其中包含一些文档记录不完整的旧代码,并且我正在尝试浏览各种 .h 文件,他们提供了有关使用所包含的所有功能的完整文档(定义保存在 .lib 和 .dll 文件中)。其中一个 .h 文件具有函数,这些函数不仅被声明,而且用简单的 return 语句或这样的空语句定义
class DLL ExampleLibraryClass {
public:
int exampleGetValue() {return 0;}
void exampleSetValue(Type val) {;}
void exampleActionFxn() {;}
};
我希望这些函数能够 return 当前变量状态或执行某些操作,这就是我感到困惑的原因。
另外:
我用过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 文件以这种方式编写以及如何利用文件。这是一种常见的或已知的做法吗?链接器是否仍会在我的链接库中查找函数的定义?是否还有其他代码需要我寻找更多线索?或者从广义上讲,我应该如何回应?
非常感谢,如果您需要更多信息来解决这个问题,请告诉我,我不确定在这件事中到底什么是重要的。
编辑: 在示例代码中添加了被遗忘的 return 类型。
编辑:添加了关于 DLL 定义的注释。
将此代码用于某些用途的一种情况是覆盖函数。这些函数包含一些默认代码,以后可以覆盖。
我目前正在处理一个项目,其中包含一些文档记录不完整的旧代码,并且我正在尝试浏览各种 .h 文件,他们提供了有关使用所包含的所有功能的完整文档(定义保存在 .lib 和 .dll 文件中)。其中一个 .h 文件具有函数,这些函数不仅被声明,而且用简单的 return 语句或这样的空语句定义
class DLL ExampleLibraryClass {
public:
int exampleGetValue() {return 0;}
void exampleSetValue(Type val) {;}
void exampleActionFxn() {;}
};
我希望这些函数能够 return 当前变量状态或执行某些操作,这就是我感到困惑的原因。
另外:
我用过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 文件以这种方式编写以及如何利用文件。这是一种常见的或已知的做法吗?链接器是否仍会在我的链接库中查找函数的定义?是否还有其他代码需要我寻找更多线索?或者从广义上讲,我应该如何回应?
非常感谢,如果您需要更多信息来解决这个问题,请告诉我,我不确定在这件事中到底什么是重要的。
编辑: 在示例代码中添加了被遗忘的 return 类型。
编辑:添加了关于 DLL 定义的注释。
将此代码用于某些用途的一种情况是覆盖函数。这些函数包含一些默认代码,以后可以覆盖。