2
を含む地図を含む: util.h でLinuxのC:中の再定義のエラーがIヘッダの下に持ってプロジェクトを有するヘッダ
main.c <- main.h <- tcphelper.h <- tcptest.h <- util.h
<- udptest.h <------------- util.h
を、Iは構造体cpu_usageの関数プロトタイプを定義:
void get_cpu_usage(struct cpu_usage *cu);
このプロジェクトをGCCでコンパイルすると、この再定義エラーが発生します。どのようにこの問題を解決するのですか?
ありがとうございました!
In file included from udptest.h:15:0,
from main.h:10,
from main.c:7:
util.h:27:8: error: redefinition of struct cpu_usage
struct cpu_usage{
^
In file included from tcptest.h:14:0,
from tcphelper.h:10,
from main.h:9,
from main.c:7:
util.h:27:8: note: originally defined here
struct cpu_usage{
^
C 7.1.3予約済み識別子: "アンダースコアで始まり、大文字または別のアンダースコアで始まるすべての識別子は、いつでもすべての用途に予約されています。" '_UTIL_H_'は言語によって予約されていることを私に暗示します。たぶん 'UTIL_H' – chux
あなたが正しいです、標準ヘッダーとの競合があるかもしれません。別のオプションは "_INCLUDED"のような接尾辞を追加することです。 –