[スレッド全体]

2015/10/24 (土) 19:42:11 もか  
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
[2306] CアウトラインでK&R関数定義がおかしい
K&Rの
int func(arg,length)
char* arg;
int length;
{
        int i;
        func2();
        i = test(arg, length);
        return (i);
}
みたいな記述でいつからかはわからないのですがfunc2, returnが関数宣言扱いになってます。

2015/10/24 (土) 21:28:42 novice  
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
[2307] Re:CアウトラインでK&R関数定義がおかしい
▼ もかさん
> K&Rの
> みたいな記述でいつからかはわからないのですがfunc2, returnが関数宣言扱いになってます。


調べてみたら、
r2995 o
r2996 x
でした。

https://sourceforge.net/p/sakura-editor/code/2996/


2015/10/24 (土) 21:45:03 もか  
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
[2308] Re2:CアウトラインでK&R関数定義がおかしい
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));
とりあえず私はすぐに対応するのは無理そうです。

2015/11/14 (土) 01:27:00 もか  
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0
[2312] Re3:CアウトラインでK&R関数定義がおかしい
拡張子が.cの時のC言語モードのときK&R定義を読めるようにしたパッチを登録しました。
patchunicode:1012

2015/11/17 (火) 00:39:47 novice  
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
[2313] Re4:CアウトラインでK&R関数定義がおかしい
▼ もかさん
> 拡張子が.cの時のC言語モードのときK&R定義を読めるようにしたパッチを登録しました。
> patchunicode:1012


サンプルコードを貼り付けて、
Eclipse CDTの動作を見てみましたが、
拡張子がcのときは問題なし、
拡張子がcppのときはsyntax errorが表示されます。
ということで、今回のパッチのように
自動判定&手動設定もできれば問題ないと思います。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.010][st:0.000]