проблемы с conio.h и linux

0

Моя программа компилируется на Windows без проблем. На окнах я использую conio.h на Linux я использую замену введите описание ссылки здесь. Моя первая ошибка: typedef enum {FALSE=0x00, TRUE=0xff} BOOL; и ошибка:

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
  • 0
    Так что вы найдете в строке 39 столбца 15 или 36?
  • 0
    это typedef enum {FALSE=0x00, TRUE=0xff} BOOL; строка: typedef enum {FALSE=0x00, TRUE=0xff} BOOL;
Показать ещё 3 комментария
Теги:

2 ответа

1
Лучший ответ

Поэтому проблема заключается в том, как избежать re -D, используя TRUE/FALSE и BOOL.

При портировании C-приложений неплохо иметь файл заголовка, который определяет возможности различных систем, к которым вы подключаетесь, сохраняя конкретную логику машины в одном месте.

Затем в вашем источнике вы можете работать над чем-то вроде:

#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, будут избегать попытки повторного использования -D.

В machine.h вы можете выяснить, на какой машине вы компилируете (или задаете свой собственный -D аргумент компилятору C) и установите соответствующие возможности, чтобы включить код, который работает вокруг вещей. Хотя это может показаться излишним, когда вы "просто" делаете один порт, вы обнаружите, что это значительно упростит, если вы позже перейдете к OSX.

Это может показаться хрупким, но с использованием этой стратегии разрешено использование пакетов альтернативных сигналов, при необходимости улучшенные версии malloc, с минимальным нарушением исходной версии, поэтому сохраняя одну исходную базу для всех целей.

4

Команда typedef сталкивается с каким-то другим заголовком, который #defines FALSE или TRUE.

  • 0
    Как это решить?
  • 0
    Когда я собираю на widnows все в порядке
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню