🍂

Open Watcom コンパイラでinitializer element is not constantエラーが出るか見てみる

2021/10/10に公開

はじめに

以前このような記事を書きました。

https://zenn.dev/saitoyutaka/articles/94b3c8e56b4d67

この記事で書いた以下のエラーが
他の環境でも出るかを調べてみました。

In file included from iolib.c:10:
iolib.c:21:17: error: initializer element is not constant
   21 | static FILE *in=stdin, *out=stdout;
      |                 ^~~~~
iolib.c:21:29: error: initializer element is not constant
   21 | static FILE *in=stdin, *out=stdout;
      |                             ^~~~~~

調べた環境

FreeDos

CコンパイラはFreeDosのインストールイメージに
入っていた Open Watcomを使用します。
バージョンは 1.9となっていました。

Virtual Box上で動作確認をしています。

Open Watcom のインストール

以下のページを参考にしました。

https://opensource.com/article/21/6/program-c-freedos

インストール後

C:\DEVEL\OW内にある
OWSETENV.BATを実行します。
参考にしたページは以下

https://wncdevelop.livedoor.blog/archives/6493800.html

プログラムの作成

#include <stdio.h>

static FILE *in=stdin, *out=stdout;

int main(void)
{
	printf("hello\n");
	return 0;
}

(freedosをインストールしたら、vimがインストールされました。)

ビルドができるか確認

特に、エラーはなくビルドが出来ました。
ワーニングも出ていません(オプションつければ動作が異なるのかも知れませんが)

問題なく実行もできました。

まとめ

error: initializer element is not constantエラーは
環境(コンパイラ?)によって出たり、でなかったりするっぽい。

つづく

Discussion