私は最近、単純な文字ドライバーをプログラムする方法を学びました。コードをいじっていると、C99 コードに対して次のような GCC 警告が多数スローされることに気付きました。
warning: ISO C90 forbids mixed declarations and code
これは、メインの Linux カーネルの Makefile が C99 以外の標準を使用してコンパイルするように設定されているためだと思います。周りを検索したところ、stackoverflow でこの回答が見つかりました: How to use make and compile as C99?
したがって、私は自然に Makefile で次のことを試しました。
ccflags-y := -std=gnu99
残念ながら、これは GCC 警告を黙らせませんでした。の詳細な出力をmake
確認し、GCC が実際に実行さ-std=gnu99
れ、最後に追加されていることを確認しました。だから私は少し混乱しています。
-std=gnu99
オプションを使用して Linux カーネル モジュールを正しくコンパイルするにはどうすればよいですか?
編集:
GCC 出力にこのオプションが表示されていることに気付きました: -Wdeclaration-after-statement
. -std=gnu99
これが、オプションを使用しても警告が表示される理由ですか?