Объявление enum в заголовке, невидимое в исходном файле? - PullRequest
0 голосов
/ 20 февраля 2012

В исходном файле (который является от общего объекта / DLL), я получаю OKAY could not be resolved, хотя он находится в заголовке.Заголовок находится в другом проекте, но я не думаю, что это должно быть связано, так как ppackage разрешен правильно?

Обновление, здесь источник:

Создание выходных данных из проекта строительства здания.

make all 
Building file: ../src/foor.c
Invoking: GCC C Compiler
gcc -I"/home/lk/proj/m5/m5/src/include" -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/foor.d" -MT"src/foor.d" -o "src/foor.o" "../src/foor.c"
In file included from ../src/foor.c:9:0:
/home/lk/proj/m5/m5/src/include/m5.h:33:3: warning: #warning ohshit
../src/foor.c:12:1: warning: missing braces around initializer
../src/foor.c:12:1: warning: (near initialization for 'fs[1]')
Finished building: ../src/foor.c

Building target: libfoor.so
Invoking: GCC C Linker
gcc -shared -o "libfoor.so"  ./src/foor.o   
Finished building target: libfoor.so

заголовок:

#include <stdio.h>

enum {
    OKAY = 0,
    ERR,
    ERRANY,
    // list shortened
    ERRNOTFOUND,
};

typedef struct { ..foobars.. } ppackage;

исходный файл:

#include <header.h> // Did add -I ../include, where the header is

ppackage knock(ppackage *in)
{
    return OKAY; // ERROR
}

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Если вы включите заголовок, то весь код в этом заголовке также может быть вставлен в ваш исходный файл C в точке, где указана директива #include.

Звучит странно, что онне работает.

Для включения необходимо использовать кавычки, а не угловые скобки, поскольку вы включаете сторонний заголовок.

Также, пожалуйста, включите точныевывод компилятора.

0 голосов
/ 21 февраля 2012

Не ясно, что ваше перечисление связано с ..foobars ..

Ppackage knock (ppackage * in) должен иметь возвращаемое значение типа ppackage, которое представляет собой структуру {..foobars ..}

ли

   typedef enum {
    OKAY = 0,
    ERR,
    ERRANY,
    // list shortened
    ERRNOTFOUND,
   } preturnvalue_t;

с функцией

   preturnvalue_t knock(ppackage *in)
   { 
      return OKAY; // ERROR
   }

делать то, что вам нужно?

Лутц

...