2016-05-13 5 views
1

WindowsからCentOSにコードを移植していますが、これまでに見たことのない問題に直面しています。私はこのエラーを取得するスローおよび共有オブジェクトによる可視化

byte getValueInt8() const throw(.../*Exception*/); 

:もちろん

error: expected type-specifier before ‘...’ token unsigned short getValueInt8() const throw(.../*Exception*/); 

私は、インターネットをチェックしましたし、私はそれがあることを発見しました

は、その関数の宣言を(多くはもっとあります)を考えます共有オブジェクトの可視性の問題

このウェブサイトhttps://gcc.gnu.org/wiki/Visibilityは、これを説明していますが、私はそれを読んだときにすでにこれを行っていました。

私の定義は次のとおりです。もちろん

#if defined(_MSC_VER) 
#include <winsock2.h> 
    #ifdef MFTINTERFACE_EXPORTS 
     #define EXPORT_IMPORT __declspec(dllexport) 
    #else 
     #define EXPORT_IMPORT __declspec(dllimport) 
    #endif 
#elif defined(_GCC) 
    #include <arpa/inet.h> 
    #include "CmnSocketsDef.h" 
    #include "CmnDefs.h" 
    #define EXPORT_IMPORT __attribute__((visibility("default"))) 
#else 
    #define EXPORT_IMPORT 
    #define IMPORT 
    #pragma warning Unknown dynamic link import/EXPORT_IMPORT semantics. 
#endif 

、すべてEXPORT_IMPORTはよく私のコードで設定されています。

変更前のコードはWindowsでコンパイルされます。

アイデア?例外指定など

おかげ

+0

'投(...)'関数は*いかなる*例外を投げることができることを意味し。これは、例外仕様を全く持たないのと似ています。 –

答えて

2

throw(...)有効なC++ではありません。

Microsoft アブノーマル 拡張子が発生したと仮定できます。

削除する必要があります。いずれにしても、実際には意味をなさない唯一の例外指定子は、nothrow(古代コンパイラを使用している場合はthrow())です。廃止する

https://msdn.microsoft.com/en-us/library/wfa0edys.aspx

提案:

確か

が、ここでは喫煙銃だ

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3051.html

+0

ありがとうございました!私はこれらのすべてのスローを削除します! – Render

+0

@Renderはい、すべての 'throw(...)'ステートメントを削除します。 'throw()'のままにしておきます。 'throw()'が推奨されていないので、これらのものを 'nothrow'に変換することができます。 –

+0

実際、私はしません。私はちょうど "..."の後に/ * Exception * /以外の情報がある別のファイルを見ました。構造型なので投げます。私はちょうどコードの一部を修正し、それは – Render

関連する問題