dポイントプレゼントキャンペーン実施中!

extern void __byte_order_change(int, int, byte_t*, int) attribute_hidden ;
#define__byte_order_to_host(b,p,l) __byte_order_change(b, __STDF_HOST_BYTE_ORDER, p, l)
#define__byte_order_to_src(b,p,l) __byte_order_change(__STDF_HOST_BYTE_ORDER, b, p, l)

プロンプトでコンパイルしようとすると、上記プログラムの1行目で以下のようなエラーが出ます。
c:\users\10044709\desktop\ttプロジェクト\stdf\libstdf-0.4\src\dtc.h(19) : error
C2061: 構文エラー : 識別子 'attribute_hidden'
c:\users\10044709\desktop\ttプロジェクト\stdf\libstdf-0.4\src\dtc.h(19) : error
C2059: 構文エラー : ';'


また、VSで開いてみると、【attribute_hidden】は『'{'が必要です』と表示され、
extern voidの後の【__byte_order_change】には
『名前のないプロトタイプパラメータには、本体が存在する場合は使用することはできません』と
表示されます。

ちなみに【attribute_hidden】の定義先は以下の通りですが、VS上ではエラーは出ていません。
# if !defined(attribute_hidden)
# define attribute_hidden __attribute__ ((visibility ("hidden")))
# endif
#else
# define attribute_unused
# if !defined(attribute_hidden)
# define attribute_hidden
# endif
#endif

エラーNo.で検索しても原因がよく判らず、
是非とも教示頂きたく、何卒宜しくお願い申し上げます。

A 回答 (3件)

http://freestdf.sourceforge.net/
↑これですか?
INSTALL ファイルを開いてみたところ
VCでのコンパイル法がでていますが、必要なファイルが含まれていないですね。
で、一つ前のバージョンをDLしてみたところ、VCで必要なファイルが含まれているみたいです。
最新版は、VCでコンパイル出来るようにはなっていないのでしょう。
    • good
    • 0
この回答へのお礼

その通りです。
わざわざ確認して頂きまして誠に有難う御座います。

足りないファイルは違うサイトから落としてきたり、
インクルードが足りない部分は書き足したりして
何とか思ったとおり(上長には未確認ですが・・・)の変換が
出来ました。

お礼日時:2014/05/15 14:02

使っているコンパイラは VC++ のようですが、GCC の拡張機能である __attribute__ は VC++ では使えないかと思います。


その使えない機能を attribute_hidden マクロで使っているため、VC++ がエラーと出しているように見えます。

この回答への補足

用件と致しまして、
あるオープンソースを使用してコンパイルしそれを元に処理をしたい。

しかし、ソースがC言語ですが未経験の為、ネットで調べた所、VSで開けるとあったのでVSで開いて見ていたり、NMAKEというWin上でもC言語をコンパイルできるとあったので試してみた所、記載のようなエラーが出ております。
知識が無さ過ぎてVC用なの?というお話ですが、それさえも判断が出来ておりませんでした。

現状ではNMAKEは使用せず、MinGWを入れてコンパイルを実施している最中ですが、やはりエラーが出ております。

ちなみに、オープンソースのコンパイル例にて
【gcc -o AAA AAA.c -lstda】とありますが、
『-lstda』とはコンパイルのオプションでしょうか?それともファイル名でしょうか?

上記コマンドをプロンプトより実施した時エラーとして
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lstda
collect2.exe: error: ld returned 1 exit status

と出力されるのですが、それすら判断できておりません。

以上、何卒宜しくお願い申し上げます。

補足日時:2014/05/14 11:12
    • good
    • 0

これは、VC用のプログラムなの?


># define attribute_hidden __attribute__ ((visibility ("hidden")))
この構文はGCCの拡張構文のように見えるけど、VCでも使えるの?
https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Fun …

この回答への補足

用件と致しまして、
あるオープンソースを使用してコンパイルしそれを元に処理をしたい。

しかし、ソースがC言語ですが未経験の為、ネットで調べた所、VSで開けるとあったのでVSで開いて見ていたり、NMAKEというWin上でもC言語をコンパイルできるとあったので試してみた所、記載のようなエラーが出ております。
知識が無さ過ぎてVC用なの?というお話ですが、それさえも判断が出来ておりませんでした。

現状ではNMAKEは使用せず、MinGWを入れてコンパイルを実施している最中ですが、やはりエラーが出ております。

ちなみに、オープンソースのコンパイル例にて
【gcc -o AAA AAA.c -lstda】とありますが、
『-lstda』とはコンパイルのオプションでしょうか?それともファイル名でしょうか?

上記コマンドをプロンプトより実施した時エラーとして
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lstda
collect2.exe: error: ld returned 1 exit status

と出力されるのですが、それすら判断できておりません。

以上、何卒宜しくお願い申し上げます。

補足日時:2014/05/14 11:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!