大佬教程收集整理的这篇文章主要介绍了linux-windows跨c应用程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题是:如何在代码中使用此对象?我该怎么写它会同时运行Linux和Windows?
对于swiching类型,我使用typedef,如:
typedef uint32_t DWORD;
但我必须使用什么物体?
我想写这段代码:
tr1::shared_ptr<WindowsObj> windowsobj (new WindowsObj(parameter)); tr1::shared_ptr<LinuxObj> linuxobj (new LinuxObj(parameter));
任何的想法?
class _object { }; class WindowsObject : public _object { }; class LinuxObject public _object { }; #if defined(WIN32) typedef WindowsObject Object; #else typedef LinuxObject Object; #endif Object myObject;
编辑:当然,WindowsObject和LinuxObject公开的接口必须是相同的.在这个例子中,_object将是一个定义接口的抽象基类,然后LinuxObject和WindowsObject将实现这个接口,将特定于平台的东西隐藏在它们的实现文件中.
样品
_object.h
class _object { public: virtual void doSomething() = 0; }; // eo class _object
WindowsObject.h
#include "_object.h" class WindowsObject : public _object { public: virtual void doSomething(); }; // eo class WindowsObject
WindowsObject.cpp
#if defined(WIN32) #include <windows.h> void WindowsObject::doSomething() { // do something totally reliant on windows here }; // eo doSomething #endif
然后你会对LinuxObject.h和LinuxObject.cpp做同样的事情,后者有完全不同的预处理器指令.例如,#if defined(UNIX)或某些这样的风格.注意WIN32保护实现.然后你会有一些你使用的核心头文件:
#if defined(WIN32) #include "WindowsObject.h" typedef WindowsObject Object; #else #include "LinuxObject.h" typedef LinuxObject Object; #endif
现在,在你的程序中
Object a; a.doSomething();
值得注意的是,如果只是奇怪的代码行在您的复杂对象中有所不同(比如初始化,销毁时的初始化调用),那么使用单个平台无关的对象可能会更好,并在实现中加入防护.当存在巨大差异时,此解决方案更有意义.
以上是大佬教程为你收集整理的linux-windows跨c应用程序全部内容,希望文章能够帮你解决linux-windows跨c应用程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。