0

私はコードのこの非常に単純な部分に取り組んでいますが、どういうわけかビルド エラーは私にとってかなり奇妙です。プロジェクトに次のファイルがあります: main.c, http_request.h, http_request.c; と単純なMakefile.

1.http_request.h

/* STRUCTURES */
struct http_param {
    char    key[MAX_BUFFER];
    char    *value;
};

struct http_request {
    int     size;
    struct  http_param  data[MAX_PARAM];
};

/* FUNCTIONS */
int parse_http_request(apr_pool_t *pool, const char *args, struct http_request *req); /* (A) */

2.http_request.c

#include <http_request.h>
...// something else goes here, it's fine

int 
parse_http_request(apr_pool_t *pool, const char *args, struct http_request *req) /* (B) */
{

3.メイクファイル

-I$(PROJECT_DIR)/include

このディレクトリには、http_request.h.

次にビルドすると、次のエラーが発生します。

/project/src/http_request.c:14: warning: 'struct http_request' declared inside parameter list
/project/src/http_request.c:14: warning: its scope is only this definition or declaration, which is probably not what you want
/project/src/http_request.c: In function 'parse_http_request':

上記のソースコードで述べたように、エラーは(A)andを指しています。(B)

誰が問題が何であるかを見つけるのを助けることができますか? ありがとう。

4

2 に答える 2

2

apr_pool_tを使用していることを確認すると、インクルードパスにapacheインクルードも含まれていると思われます。apacheはhttp_request.hというファイルも提供し、そのファイルが既存のファイルの代わりに含まれます。

于 2012-10-23T09:48:56.303 に答える
0

使用する

#include "http_request.h"

それ以外の

#include <http_request.h>
于 2012-10-23T09:48:51.933 に答える