gpt4 book ai didi

c - Windows和Linux用c跨平台。如何隐藏功能?

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:18 25 4
gpt4 key购买 nike

<分区>

我编写了一个代码,它应该可以在 Linux 和 Windows 中运行。对于 Windows,我编写了一个特定程序,它使用仅在 Windows 中可用的功能和功能,即它在 Linux 中不起作用。

我的程序头:

#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#if defined (_WIN32)
# include <direct.h>
# include <windows.h>
# define getcwd _getcwd
# define PATH_SEPARATOR "\\"
# define snprintf _snprintf
# define flag 2 //flag is 2 in windows
# define strdup _strdup
# define fileno _fileno
#else
# include <unistd.h>
# include <dirent.h>
# define PATH_SEPARATOR "/"
# define flag 1//on linux the flag is 1
# define sprintf_s snprintf
# define getch() getchar()
# define malloc (char*)malloc
#endif

现在我有一个函数只适用于 Windows,当我尝试在 Linux 上编译时会出现大量错误。

void funtionForWindowsOnly(){

//some things that I can only do on windows for Linux I will write a new program
}

所以我主要是这样做的

main(){

if(flag==2)//i.e. in case of windows do this
{
funtionForWindowsOnly();
}

}

但是当我尝试这样做时,Linux 在尝试编译函数时给我带来了很多错误

void funtionForWindowsOnly();

我的问题是如何在我的程序中保留这个函数 funtionForWindowsOnly() 而我的程序仍然可以使用 Linux 成功编译?

我认为有一种方法可以使用预处理器执行#ifdef 或类似的操作。或者也许还有另一种简单的方法。请帮忙。如果您需要任何进一步的信息,请告诉我。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com