stakaunt 2018-05-31 09:59:55

[C] 冗長すぎるdefine文 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

実装する人意外にいそう

#ifndef TEST_MACRO_H
	#ifdef TEST_MACRO_H_ARRAYDEF
		#define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array[0]))
		#define ARRAY_COPY(array1, array2) do{debug("array1 = %d, array2 =%d\n", ARRAY_LENGTH(array1), ARRAY_LENGTH(array2)); int loop = ((ARRAY_LENGTH(array1) == ARRAY_LENGTH(array2)) || (ARRAY_LENGTH(array1) < ARRAY_LENGTH(array2)) ? (ARRAY_LENGTH(array1)) : (ARRAY_LENGTH(array2))); debug("loop = %d\n", loop); for(int i = 0; i < loop; i++){array2[i] = array1[i]; } }while(0)
		#define ARRAY_INVERT(array) do{int length = ARRAY_LENGTH(array); debug("length = %d\n", length); int buf[length];ARRAY_COPY(array, buf); for(int i = 0; i < length; i++){ array[i] = buf[length - i]; debug("array[%d] = %d, buf[%d] = %d, i = %d\n", i, array[i], i , buf[i], i); }}while(0)
		#define ARRAY_ZEROCLEAR(array) do{ for(int i = 0; i < ARRAY_LENGTH(array); i++) array[i] = 0; }while(0)
	#endif
#endif

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(1)

#1 The_BestClicker 2018-06-01 09:42:56  

includeガードかと思ったけどifndefの直後にifdefとか使わせる気ないやん

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[Java] nullチェック

このエントリーをはてなブックマークに追加

SVNの更新内容を眺めてたら、凄いコード...

// nullチェック
if(list.isEmpty(){
    // ...

鑑賞する »

[C] 動くんだ・・

このエントリーをはてなブックマークに追加

そら、文法的に間違ってはいないよ。でもさ...

if (foo == x) switch (foo) {
 default:
...

鑑賞する »

[C] main is usually a fu...

このエントリーをはてなブックマークに追加

逆に、そうでなくても文法上は問題なかった...

char* main = 'テラワロス';

鑑賞する »