◀Unicode版開発トップへ
2306
CアウトラインでK&R関数定義がおかしい
2307
Re:CアウトラインでK&R関数定義がおかしい
2308
Re2:CアウトラインでK&R関数定義がおかしい
2312
Re3:CアウトラインでK&R関数定義がおかしい
2313
Re4:CアウトラインでK&R関数定義がおかしい
[2306]
CアウトラインでK&R関数定義がおかしい
もか
2015年10月24日 19:42
K&Rの
int func(arg,length)
char* arg;
int length;
{
int i;
func2();
i = test(arg, length);
return (i);
}
みたいな記述でいつからかはわからないのですがfunc2, returnが関数宣言扱いになってます。
[2307]
Re:CアウトラインでK&R関数定義がおかしい
novice
2015年10月24日 21:28
▼ もかさん
> K&Rの
> みたいな記述でいつからかはわからないのですがfunc2, returnが関数宣言扱いになってます。
調べてみたら、
r2995 o
r2996 x
でした。
https://
sourcefo
rge.
net/
p/
sakura-
editor/
code/
2996/
[2308]
Re2:CアウトラインでK&R関数定義がおかしい
もか
2015年10月24日 21:45
C++の関数宣言の後ろに何かくっついてる状態と、
K&Rの関数定義は、マクロまで考えると両方同時にサポートするのは
かなり厳しそうです。
class,publicなどのキーワードやstruct内関数,::の使用や、
ファイル拡張子などでC++かC(K&R)かを識別して処理を分ける方法ぐらいしか思いつきません。
他にはK&Rの場合は、引数リストのところが変数名のみになっていて、
それ以外では型と変数名の2つ以上のキーワードからできてるはずなので
それで識別可能かもしれません。
void func_k_and_r
(arg1, arg2)←これが変数名のみである
int arg1;
void func_cpp
(int arg1, int arg2)←これが必ず型名を含む(2つ以上の単語でできてる)
_THROW2((hoge, fuga));
とりあえず私はすぐに対応するのは無理そうです。
[2312]
Re3:CアウトラインでK&R関数定義がおかしい
もか
2015年11月14日 01:27
拡張子が.cの時のC言語モードのときK&R定義を読めるようにしたパッチを登録しました。
patchunicode:1012
[2313]
Re4:CアウトラインでK&R関数定義がおかしい
novice
2015年11月17日 00:39
▼ もかさん
> 拡張子が.cの時のC言語モードのときK&R定義を読めるようにしたパッチを登録しました。
> patchunicode:1012
サンプルコードを貼り付けて、
Eclipse CDTの動作を見てみましたが、
拡張子がcのときは問題なし、
拡張子がcppのときはsyntax errorが表示されます。
ということで、今回のパッチのように
自動判定&手動設定もできれば問題ないと思います。