Max*_*ien 5 c c++ global-variables static-variables wrapper
最近我发现了一个我想在我的 C++ 项目中使用的 C 库。该代码配置了全局变量,并将其输出写入静态指针指向的内存。当我执行我的项目时,我希望运行 2 个 C 程序实例:一个具有配置 A,一个具有配置 B。我不能运行我的程序两次,所以我认为有 2 个选项:
哪一种是最快的解决方案?是否有其他可能性来运行同一 C 源代码的 2 个实例?
谢谢,
最大限度
C++ -Wrapper
通过将“整个库”(仅稍作修改)粘贴到类中,您可以更轻松地完成任务。
// C
static char resultBuffer[42];
void ToResult(int x) { ... }
char const * GetResult() { return resultBuffer; }
Run Code Online (Sandbox Code Playgroud)
变成
// C++
class CMyImportantCLib
{
private:
char resultBuffer[42];
void ToResult(int x) { ... } // likely, no code changes at all
char const * GetResult() { return resultBuffer; }
} ;
Run Code Online (Sandbox Code Playgroud)
主要有声明性更改(例如“杀死”静态和外部声明)。不过,您需要在方法内寻找静态变量,并将它们也转换为成员
单独的命名空间
这是一个丑陋的解决方案,但对你来说可能就足够了:
// impMyLib.h
namespace A
{
#include "c-lib.h"
}
namespace B
{
#include "c-lib.h"
}
// impMyLib.cpp
namespace A
{
#include "c-lib.c"
}
namespace B
{
#include "c-lib.c"
}
Run Code Online (Sandbox Code Playgroud)
如果幸运的话,优化器/链接器会成功折叠相同的代码。然而,类型 inA::和B::是不相关的。
| 归档时间: |
|
| 查看次数: |
9245 次 |
| 最近记录: |