ページ 11

ヘッダーファイルの#includeと#defineの順序について

Posted: 2017年10月23日(月) 02:13
by 77kokugov
C++を書いているんですが、
ヘッダーファイルに

コード:

#define W 1920;
#define H 1080;

#include<stdio.h>
~~~~~~
と書くとエラーがものすごい出てコンパイルできないのですが、

コード:

#include<stdio.h>

#define W 1920;
#define H 1080;
~~~~~~
とincludeとdefineを逆にするとコンパイル通って、エラーも何も起きません。

この違いとは何なのでしょうか?

Re: ヘッダーファイルの#includeと#defineの順序について

Posted: 2017年10月23日(月) 02:55
by MK5
違いですね。
上と下ではソースコードが違いますね。
実用上はその程度と思えます。

ただ、強いて言うならば、仮に質問者様のコンパイラにて、<stdio.h>内に"H"や"W"が定義されていた場合、上の例だと<stdio.h>内の定義で上書きされる場合や、下の例だと質問者様が定義した値で<stdio.h>内の値が上書きされたり、若しくは、エラーになる可能性は有るとは思えます。

因みにですが、

コード:

#define
は別に<stdio.h>が無くても使えます。

また、分かっているのかもしれませんが、

コード:

#include <stdio.h>
自体が、ただ単に、その場所に<stdio.h>の中身を書く事と一緒の筈です。

そして、更に言うならば、実は、

コード:

#include <stdio.h>
自体を書かなくても良い事になっています。
※最近のコンパイラの話であり、古いコンパイラでは、書かないとNGな場合があります。