Appleが提供するSimplePing.hを使用するプロジェクトが目的cでコーディングされています。Xcode9にアップデートした後、C++にすべての宣言の型指定子が必要になる
Xcodeをv9.0にアップデートするまで、コードは完全に実行されていました。それはSimplePing.h
C++ここでは、アップルが提供するファイルSimplePing.hでエラーでもうコンパイルしていないエラーがSimplePingにおけるそれらのラインのそれぞれに生成されるすべての宣言
ための型指定が必要です。 H
check_compile_time(sizeof(IPHeader) == 20);
check_compile_time(offsetof(IPHeader, versionAndHeaderLength) == 0);
check_compile_time(offsetof(IPHeader, differentiatedServices) == 1);
check_compile_time(offsetof(IPHeader, totalLength) == 2);
check_compile_time(offsetof(IPHeader, identification) == 4);
check_compile_time(offsetof(IPHeader, flagsAndFragmentOffset) == 6);
check_compile_time(offsetof(IPHeader, timeToLive) == 8);
check_compile_time(offsetof(IPHeader, protocol) == 9);
check_compile_time(offsetof(IPHeader, headerChecksum) == 10);
check_compile_time(offsetof(IPHeader, sourceAddress) == 12);
check_compile_time(offsetof(IPHeader, destinationAddress) == 16);
クラスSimplePing.hは、以下のクラスを含む
#include <AssertMacros.h> // for __Check_Compile_Time
check_compile_timeのコードは以下のように定義されている:
#ifndef __Check_Compile_Time
#ifdef __GNUC__
#define __Check_Compile_Time(expr) \
extern int compile_time_assert_failed[ (expr) ? 1 : -1 ] __attribute__((unused))
#else
#define __Check_Compile_Time(expr) \
extern int compile_time_assert_failed[ (expr) ? 1 : -1 ]
#endif
#endif
最初の質問:どのように私はこの問題を解決することができますか? 2番目の質問:AssertMacros.hファイルを変更できないようです。ロックされています。ロックを解除して修正する必要がありますか?問題を解決するために他に何かできることはありますか?落語の鋭いコメントに
わかりましたので、ヘッダは '__Check_Compile_Time'定義し、check_compile_time'が定義されていないようだ':のアップルのSimplePing.hクラスには、次のことをする必要があります。 – StoryTeller