以下がコンパイルされない理由を理解するのに長い時間を費やしました:
enum IPC_RC {OK, EOF, ERROR, NEW };
エラーメッセージは、開き括弧が表示されることを期待していなかったという趣旨のことだけを述べていました。私が学んだのは、より現代的なコンパイラでコンパイルしようとするまではありませんでした:
/usr/include/stdio.h:201:13: note: expanded from macro 'EOF'
#define EOF (-1)
というわけで、ついにマクロにやられちゃいました!:)
私のコードには含まれていません#include <stdio.h>
(.h 接尾辞が付いたものは何も含めていません) が、明らかに、私が含めたものが .h を含める結果になりました<stdio.h>
。含まれている場所を正確に追跡せずに、自分自身を保護する方法 (名前空間?) はありますか?