Xcodeでなんか知らんけど原因不明なエラーが大量に出る
Xcodeで原因不明なExpected ~~~ なエラーが出る
これを読んで解決するかもしれない人
- 意味不明なエラーが出てビルドが通らない人
- その中でEmacsやそのキーバインディングをいつも使っている人
- その上Xcodeを使っている人
環境
macOS: 1.14.2
Xcode: 10.1(この問題自体は前々からある模様)
TL;DR
- Xcode + C++ + Siv3Dでゲームの設計中に謎のエラー
- 謎のエラーというわけではなく、エラーメッセージは単純だが、出る原因がわからない
- 出るやつ
- Expected member name or ';' after declaration specifiers
- Expected unqualified-id
- Expected Expression
どういう所で出たのか
class Looper final {
public:
Looper();
bool loop() const; //Expected Expression
};
// 前略
bool Looper::loop() const {
return true; //Expected Expression
}
class SystemMain final {
public:
SystemMain() = default;;
bool init();
bool main();
bool exit();
};
//この行でExpected unqualified-id
class Define final {
public:
const static int WINDOW_W;
const static int WINDOW_H;
const static double PI; //Expected member name or ';' after declaration specifiers
};
考察
- 文法的に正しいように見える所でも発生している
- 空行ですら発生している
- 文法的問題ではない?
- 全角スペースではないことを確認した
-> 全角スペース以外の見えない文字
-> 制御文字か?
検証
問題の部分をバイナリエディタで見てみる
00000100 20 20 20 20 0a 20 20 20 20 63 6f 6e 73 74 20 73 | . const s|
00000110 74 61 74 69 63 20 64 6f 75 62 6c 65 20 13 50 49 |tatic double .PI|
00000120 3b 0a 7d 3b 0a 0a 0a 23 65 6e 64 69 66 20 2f 2a |;.};...#endif /*|
00000120 65 78 69 74 28 29 3b 0a 7d 3b 0a 13 0a 23 65 6e |exit();.};...#en|
なんかDefine.hppの0x11D
とSystemMain.hppの0x12B
入力するはずのない0x13
が見える...?
Asciiコード表で確認してみると
| 0x13 | DC3(装置制御3) |
...なんで?
原因
- 原因はXcodeでミスってc-x sを押しまくってしまうこと
Xcode ascii 0x13
とかでググってみても情報が無い、
けどふと思った、いつもEmacs使っているのでよく間違って C-x sをやっている...
-> 入力するとそこに0x13が挿入されることを確認
-> なんか知らんけどXcodeはc-xをすると0x13が挿入されてしまう模様
解決策
Preference -> KeyBindingsを見てみると
こんなのを発見、おそらくXcodeでのMark Yankをするために内部的に0x13を入れているのだと思われる(要出典)
どうせこれは使わないので無効化して、今ある0x13を消すと同様の問題は発生しなくなった
Xcodeでも完璧にEmacsのキーバインディングが使いたい....
Author And Source
この問題について(Xcodeでなんか知らんけど原因不明なエラーが大量に出る), 我々は、より多くの情報をここで見つけました https://qiita.com/Hiragi-GKUTH/items/6bdaf3056b1afd81ee8a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .