C #include和常量问题

时间:2011-08-23 05:28:25

标签: c include

我有这两个文件,functions.c和constants.h。

functions.c有这一行:

#include "constants.h"

但是,当我尝试编译functions.c时,functions.c函数无法从constants.c中找到这些常量。这些是const类型常量。我知道这是一个非常无聊的问题,但我不知道解决方案。

编辑: 文件内容(其中一些):

functions.c:

#include <string.h>
#include "Directivas.h"
...
int hayDirectivaInclude(char* buffer) {
    if (strncmp(include, buffer, longInclude) == 0)
        return 1;
    else
        return 0;
}

constants.h:

const char include[10] = { '#', 'i', 'n', 'c', 'l', 'u', 'd', 'e', ' ', 0 };
const int longInclude = 9;

3 个答案:

答案 0 :(得分:0)

是否在constants.h中声明了常量?你至少应该在那里声明它们,否则编译器在处理functions.c时不会知道它们存在。

答案 1 :(得分:0)

您的constants.h必须包含extern对常量的引用。

例如,假设您在constants.c中有const char* COOL_STRING = "Erandros is cool."。为了让functions.c了解此字符串,您必须在extern char* COOL_STRING;某处写constants.h来告知其存在,例如{{1}}

答案 2 :(得分:0)

假设你已经在constants.h中声明了一些函数,并且它的定义是在constants.c中那么当你编译function.c时“只需要包含constants.h就不会包含那些函数的定义。所以它会给出错误...你需要同时编译两个.c文件。