繁体   English   中英

Visual Studio C ++:如何使Windows编译器看不到部分代码?

[英]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 _WIN32 / #endif对围绕您的MSVC特定代码。

常见的做法是使用编译器标志,例如

#ifdef WIN_32
// Windows stuff...
#else
// Linux stuff
#endif

检查在编译器或包含的标头中定义了哪些Windows标志的确切值

请访问http://predef.sourceforge.net/ ,以获取各种编译器提供的预定义宏的广泛列表,以区分操作系统,编译器和处理器体系结构。 如果需要,它们将使您不仅可以区分Win32和Linux。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM