在源文件(来自共享对象/ 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
}
答案 0 :(得分:2)
如果包含标题,则该标题中的所有代码也可以在#include
指令所在的位置粘贴到C源文件中。
听起来很奇怪,它不起作用。
要做的一件事就是使用引号而不是尖括号来包含,因为你要包含第三方标题。
另外,请包含确切的编译器输出。
答案 1 :(得分:0)
目前尚不清楚,你的枚举与..foobars有关..
Ppackage knock(ppackage * in)应该有一个ppackage类型的返回值,它是一个struct {.foobars ..}
确实
typedef enum {
OKAY = 0,
ERR,
ERRANY,
// list shortened
ERRNOTFOUND,
} preturnvalue_t;
带有功能
preturnvalue_t knock(ppackage *in)
{
return OKAY; // ERROR
}
做你需要的吗?
鲁兹