Issue #11487 has been reported by Naohisa Goto.

----------------------------------------
Bug #11487: id_table.c compile error by fcc on Solaris 10
https://bugs.ruby-lang.org/issues/11487

* Author: Naohisa Goto
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Solaris 10 上の古いfccにて、最近、id_table.c のコンパイルに失敗します。

下記は r51677 におけるエラーメッセージです。

~~~
fcc -O2 -KV9 -KVIS2  -DRUBY_EXPORT -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include   -I. -I.ext/include/sparc64-solaris2.10 -I./include -I. -o symbol.o -c symbol.c
(中略)
"./id_table.c", line 453: error: syntax error near `/'
"./id_table.c", line 1277: error: initialization: constant expression is expected for variable: `tmp_tbl'
make: *** [symbol.o] Error 1
~~~

2箇所にエラーが出ているのがわかります。

id_table.c の453行目は以下のとおりです。

~~~
	    // fprintf(stderr, "memmove: %p -> %p (%d, capa: %d)\n", old_values, new_values, num, capa);
~~~

CのソースなのにC++形式のコメントを使っているのが原因です。


id_table.c の1277行目は以下のとおりです。

~~~
	struct hash_id_table tmp_tbl = {new_cap, 0, 0};
~~~

構造体の変数による初期化はできない主旨のエラーが出ています。
宣言後、1要素ずつ代入するように書き換えるとよさそうです。




-- 
https://bugs.ruby-lang.org/