質問するログイン新規登録

回答編集履歴

2

追記2追加

2016/05/17 09:32

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -5,5 +5,13 @@
5
5
  [Wikipedia[en]: pragma once | Portability](https://en.wikipedia.org/wiki/Pragma_once#Portability) によると現在も開発されているメジャーなコンパイラの中で未対応なのはOracle Solaris Studioだけのようです。どこまで移植するかによりますが、C11をターゲットにした今風のC言語にするのであれば、標準には無い`#pragma once`を使用しても問題無いかも知れません。
6
6
 
7
7
  ---
8
+ 【追記1】
8
9
 
9
- ふと気付いたのですが、ANSIになる前のC言語では、`#define`で置換後のテキストが必須だったと言うことはないでしょうか? ANSI規格準拠のK&R第二版では置換後のテキストはありません(和訳本p.112の例)でしたので、ANSIの時点で書かなくてもよくなったと推測できませんでしょうか? もしK&R初版をお持ちの方がいれば、どのように書かれているのか教えて欲しいです。
10
+ ふと気付いたのですが、ANSIになる前のC言語では、`#define`で置換後のテキストが必須だったと言うことはないでしょうか? ANSI規格準拠のK&R第二版では置換後のテキストはありません(和訳本p.112の例)でしたので、ANSIの時点で書かなくてもよくなったと推測できませんでしょうか? もしK&R初版をお持ちの方がいれば、どのように書かれているのか教えて欲しいです。
11
+
12
+ ---
13
+ 【追記2】
14
+
15
+ GNU libtoolのドキュメントの中で、インクリュードガードの例で同じく`1`と入れているものが載っていました。
16
+ [http://www.geocities.jp/fut_nis/html/libtool-ja/C-header-files.html](http://www.geocities.jp/fut_nis/html/libtool-ja/C-header-files.html)
17
+ 上のドキュメントは移植性が高いヘッダファイルの作り方に関してです。ANSI以降は問題ないはずですので、非ANSIとの互換性のためかにそのようにしているのかも知れません。

1

ANSIより前の話では?

2016/05/17 09:32

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -2,4 +2,8 @@
2
2
 
3
3
  [2016年、C言語はどう書くべきか (後編) | モダンコンパイラが`#pragma once`をサポート](http://postd.cc/how-to-c-in-2016-2/#gfm-7)
4
4
 
5
- [Wikipedia[en]: pragma once | Portability](https://en.wikipedia.org/wiki/Pragma_once#Portability) によると現在も開発されているメジャーなコンパイラの中で未対応なのはOracle Solaris Studioだけのようです。どこまで移植するかによりますが、C11をターゲットにした今風のC言語にするのであれば、標準には無い`#pragma once`を使用しても問題無いかも知れません。
5
+ [Wikipedia[en]: pragma once | Portability](https://en.wikipedia.org/wiki/Pragma_once#Portability) によると現在も開発されているメジャーなコンパイラの中で未対応なのはOracle Solaris Studioだけのようです。どこまで移植するかによりますが、C11をターゲットにした今風のC言語にするのであれば、標準には無い`#pragma once`を使用しても問題無いかも知れません。
6
+
7
+ ---
8
+
9
+ ふと気付いたのですが、ANSIになる前のC言語では、`#define`で置換後のテキストが必須だったと言うことはないでしょうか? ANSI規格準拠のK&R第二版では置換後のテキストはありません(和訳本p.112の例)でしたので、ANSIの時点で書かなくてもよくなったと推測できませんでしょうか? もしK&R初版をお持ちの方がいれば、どのように書かれているのか教えて欲しいです。