回答編集履歴

2

refinement

2017/09/08 04:49

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- プログラミングC言語の制限(仕様)です。Chironianさん回答にあるように、C言語では「グローバル変数(定数)の初期化には定数しか利用できません」。またC言語では「const付きで定義された変数は"定数"ではありません」。後者はC++言語ならば"定数"として扱われます。
5
+ プログラミングC言語の制限(仕様)です。Chironianさん回答にあるように、C言語では「グローバル変数(const付きも含む)の初期化には"定数"しか利用できません」。またC言語では「const付きで定義された変数は"定数"ではありません」。後者はC++言語ならば"定数"として扱われます。
6
6
 
7
7
 
8
8
 
@@ -40,7 +40,7 @@
40
40
 
41
41
  - 1) マクロ定義(`#define t1 1.0`, `#define t2 (2.0*t2)`)に変更する。ただし、マクロ定義名は大文字(`T1`や`T2`)としておくのが一般的です。また短すぎるマクロ名も別のトラブルの元になりますから、その定数の意味を表す明快な名前に変更すべきです。
42
42
 
43
- - 2) "`enum`ハック"とよばれる回避策を利用する。ただし、今回のように浮動小数点数には適用できません。例: `enum { SIZE = 10 }; int [SIZE];`のように書けます。
43
+ - 2) "`enum`ハック"とよばれる回避策を利用する。ただし、今回のように浮動小数点数には適用できません。例: `enum{SIZE = 10}; int arr[SIZE];`のように書けます。
44
44
 
45
45
  - 3) C言語ソースコードを、C++言語としてコンパイルする。いわゆる"Better C"としてのC++の利用です。
46
46
 

1

refinement

2017/09/08 04:49

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- プログラミングC言語の制限(仕様)です。Chironianさん回答にあるように、C言語では「グローバル変数定数の初期化には定数値しか利用できません」。またC言語では「const付きで定義された変数は"定数"ではありません」。後者はC++言語ならば定数として扱われます。
5
+ プログラミングC言語の制限(仕様)です。Chironianさん回答にあるように、C言語では「グローバル変数(定数)の初期化には定数値しか利用できません」。またC言語では「const付きで定義された変数は"定数"ではありません」。後者はC++言語ならば"定数"として扱われます。
6
6
 
7
7
 
8
8
 
@@ -10,17 +10,15 @@
10
10
 
11
11
  // (ファイルスコープ)
12
12
 
13
- int gv1 = 10; /* OK */
13
+ int gv1 = 10; // OK: 値10は定数
14
14
 
15
- const int gc1 = 20; /* OK */
15
+ const int gc1 = 20; // OK: 値20は定数
16
16
 
17
17
 
18
18
 
19
+ int gv2 = gv1 * 2; // NG: gv1は定数でない
19
20
 
20
-
21
- int gv2 = gv1 * 2; /* NG */
22
-
23
- const int gc2 = gc1 * 2; /* NG */
21
+ const int gc2 = gc1 * 2; // NG: gc1は定数でない
24
22
 
25
23
 
26
24
 
@@ -40,9 +38,9 @@
40
38
 
41
39
 
42
40
 
43
- - 1) マクロ定義(`#define t1 1.0`, `#define t2 (2.0*t2)`)に変更する。ただし、マクロ定義名は大文字(`T1`や`T2`)としておくのが一般的です。
41
+ - 1) マクロ定義(`#define t1 1.0`, `#define t2 (2.0*t2)`)に変更する。ただし、マクロ定義名は大文字(`T1`や`T2`)としておくのが一般的です。また短すぎるマクロ名も別のトラブルの元になりますから、その定数の意味を表す明快な名前に変更すべきです。
44
42
 
45
- - 2) "`enum`ハック"とよばれる回避策を利用する。ただし、今回のように浮動小数点の場合は適用できません。例: `enum { SIZE = 10 }; int [SIZE];`のように書けます。
43
+ - 2) "`enum`ハック"とよばれる回避策を利用する。ただし、今回のように浮動小数点数には適用できません。例: `enum { SIZE = 10 }; int [SIZE];`のように書けます。
46
44
 
47
45
  - 3) C言語ソースコードを、C++言語としてコンパイルする。いわゆる"Better C"としてのC++の利用です。
48
46