![](/img/trans.png)
[英]How should I compile source code in c++ on a mac to ensure it will compile correctly in Windows Visual Studio Compiler while adhering to ANSI/ISO
[英]Visual studio C++: How to make parts of code not be seen by the windows compiler?
因此,总的来说,我有一个基于OpenSource跨平台库的小型C ++项目。 因此它可能会在linux下编译。 因此,当我需要实现一些防御性平台特定的类函数时,我遇到了麻烦。
我有一个包含所有函数声明的类头,以及带有实现的cpp文件。 所以首先:如何在标头中声明平台特定的函数,以便当我尝试在linux下编译时,它不会尝试编译Windows特定的函数...,而在Windows上,当编译器将不尝试编译包含标头的linux函数。
因此对于Windows,我需要一些如何包装此类超级特定功能的方法
HRESULT EnumerateDevices(REFGUID category, IEnumMoniker **ppEnum)
void DisplayDeviceInformation(IEnumMoniker *pEnum)
还有一些标题
#include <windows.h>
#include <dshow.h>
#pragma comment(lib, "strmiids")
虽然对于Linux,我有这样的标题
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/videodev.h>
我有一个名为void PrintCamerasList()
函数,我想为我单独使用的platplats实现。
我希望你明白我的需要。 因此,总的来说,我需要使用我的函数的一些示例,或者一旦您可以发明,就让您的想象力不断涌动!
那么,为什么需要全部呢?-我正在使用OpenCV创建一些控制台应用程序,并且需要列出用户摄像机名称。 OpenCV不能自行执行此操作 。 所以我问怎么办呢我intrest的bouth平台- 窗口和Linux的
常见的做法是使用编译器标志,例如
#ifdef WIN_32
// Windows stuff...
#else
// Linux stuff
#endif
检查在编译器或包含的标头中定义了哪些Windows标志的确切值
请访问http://predef.sourceforge.net/ ,以获取各种编译器提供的预定义宏的广泛列表,以区分操作系统,编译器和处理器体系结构。 如果需要,它们将使您不仅可以区分Win32和Linux。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.