首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >conio.h和linux问题

conio.h和linux问题
EN

Stack Overflow用户
提问于 2014-06-07 12:05:05
回答 2查看 180关注 0票数 0

我的程序正在Windows上编译,没有问题。在windows上,我在linux上使用conio.h,我使用的是替换在这里输入链接描述。我的第一个错误:typedef enum {FALSE=0x00, TRUE=0xff} BOOL;和error:

代码语言:javascript
复制
types.h:39:15: error: expected identifier before numeric constant
types.h:39:15: error: expected ‘}’ before numeric constant
types.h:39:15: error: expected unqualified-id before numeric constant
types.h:39:36: error: expected declaration before ‘}’ token
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-07 18:46:11

因此,问题在于如何避免重新定义TRUE/FALSE和BOOL。

在移植C应用程序时,最好有一个头文件来定义您移植到的各个系统的功能,将机器特定的逻辑保持在一个位置。

然后,在您的源代码中,您可以做如下工作:

代码语言:javascript
复制
#include "machine.h"

#if HAS_BOOL
    #define FALSE myFALSE
    #define TRUE  myTRUE
    #define BOOL  myBOOL
#endif

#ifndef HAS_32bit_LONG
    /* long is 64bit */
    ...
#endif

然后,您的类型.h包括在系统文件和machine.h之后,将避免试图重新定义。

在machine.h中,您可以找出您正在为哪台机器编译(或将您自己的-D参数设置为C编译器),并设置适当的功能,以启用代码。虽然这可能看起来有点过分,但是当您“只是”做一个端口时,您会发现如果稍后移植到OSX,它会使事情变得更简单。

它可能看起来很脆弱,但使用这种策略,允许使用替代信号包,在需要时改进malloc版本,对原始版本的干扰最小,因此为所有目标保留一个源库。

票数 1
EN

Stack Overflow用户

发布于 2014-06-07 12:09:28

typedef与#定义FALSE或TRUE的其他标头发生冲突。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24096972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档