3

HP NonStop マシンでコンパイルして実行することを目的としたプログラムを C で作成しています。ただし、Linux を実行しているワークステーションで主な開発を行いたいと考えています。HP NonStop C コンパイラには、次のような非標準の #include ディレクティブが必要です。

#include <stdio.h> nolist

#include ディレクティブごとに、ワークステーションの GCC が不平を言っています:

S88USF.c:139:21: warning: extra tokens at end of #include directive

この特定の警告を抑制するにはどうすればよいですか?

注: SO では、同様の質問が既に行われています。正しい答えは、「そもそも gcc に文句を言う理由を与えないでください」という行に沿っています。ただし、このシナリオでは、明示的に #include ディレクティブをそのまま使用したいと考えています。

私は自分が何をしているのかを知っていますが、それをgccに通知する方法がわかりません。

4

2 に答える 2

8

回避策の 1 つは、次のプリプロセッサ マクロを含むヘッダーを定義することです。

//hp_workaround.h
#ifdef HP_
#define HP_INCLUDE_DIRECTIVE(x) x
#else
#define HP_INCLUDE_DIRECTIVE(x) 
#endif

次に、このマクロでディレクティブを保護します

#include "hp_workaround.h"
#include <stdio.h> HP_INCLUDE_DIRECTIVE(nolist)
于 2013-01-11T14:59:44.007 に答える
2

インクルード内で発生するマクロ展開がおそらく役立つでしょう。

GCC はこれを受け入れます。

#define nolist
#include <stdlib.h> nolist
/* maybe #undef nolist here */
于 2013-01-11T15:00:49.463 に答える