ここから本文です

C言語の質問です。 Const定数で定義した値を、#defineで定義した場合、エラーにな...

cxh********さん

2018/4/921:03:18

C言語の質問です。
Const定数で定義した値を、#defineで定義した場合、エラーになりますでしょうか。

閲覧数:
82
回答数:
4
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

n2q********さん

2018/4/1018:48:58

『Const定数で定義した値』

定義してみます。

const int Const定数 = 5;



『#defineで定義した場合』

定義してみます。

#define X 5 //「Const定数で定義した値」
#define Y Const定数 //「Const定数で定義した」名前



『エラーになりますでしょうか。』

いや、エラーにはなりませんが。

反対の定義もやってみます。

#define 5 X //「Const定数で定義した値」
#define Const定数 Y //「Const定数で定義した」名前

さすがに #define 5 とかっていうのはエラーです。識別子を書くべきところに 5 という数値を書いてしまってもまずいですから。

一方、「Const定数」という名前を #define する分には別に問題はありません。ただ、この #define によって「Const定数」が「Y」に置換されてしまいますのでね。後で『Const定数で定義した値』にアクセスしたいときは注意が必要です。


~ Visual C++ の例 ~

#pragma push_macro("Const定数")
#undef Const定数
const int 別の定数 = Const定数;
#pragma pop_macro("Const定数")

このようにして「#defineで定義した」ものを一時的に無効にする形です。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

2018/4/1012:10:10

> Const定数で定義した値を、#defineで定義した場合
日本語のレベルでなにをしたいのかわかりません。

少なくとも、ひとつのシンボルについて二つの定義がある、ということをしたいのならそれはおかしいでしょう。

なお、Cではconstは「定数」ではありませんので注意。

lon********さん

2018/4/1000:25:24

ならない。

#include <stdio.h>

const int hoge = 12;
const int fuga = 34;

#define hoge fuga

int main(int argc, const char *argv[]) {
printf("%d", hoge); /* hoge → fuga = 34 */

return 0;
}

has********さん

2018/4/922:46:40

質問内容がよくわからない。
一つ言えることは#defineは置換だということ。
#define C 5
int a = C;
と書くと翻訳時に
int a = 5;
と置換されて翻訳される。ただそれだけの話です。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる