0

次の非常に単純なヘッダー ファイルがあります。

#ifndef __ZYNQ_CSORT_H__
#define __ZYNQ_CSORT_H__
#define CONSTANT    5
#endif

このヘッダー ファイルを同じフォルダー内の別の C ファイルにインクルードしています。プリプロセッサは、ヘッダー ファイルのインクルードについてまったく文句を言いませんが、定数の値を出力しようとすると、定義されていないことがわかります。何が起きているか知っている人はいますか?

4

2 に答える 2

3

プリプロセッサが何をしようとしているのかよくわからない場合、C プリプロセッサを単独で実行すると明らかになることがよくあります。たとえば、次のようになりtest1.hます。

#ifndef TEST1_H
#define TEST1_H
/* In TEST1_H */
#define CONSTANT 5
#endif

...そしてtest1.c

#include "test1.h"
#include "test1.h"

int main(int argc, char **argv) {
    return CONSTANT;
}

... running cpp -C test1.c test1.c.out(-C引数は、プリプロセッサにコメントを保持させます) はtest1.c.out次のようになります:

# 1 "test1.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test1.c"
# 1 "test1.h" 1


/* In TEST1_H */
# 2 "test1.c" 2


int main(int argc, char **argv) {
 return 5;
}

したがって、私の場合、正しいヘッダー ファイルがインクルードされていると確信できます。

于 2013-04-22T01:21:34.783 に答える