[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 09/06 22:43 / Filesize : 155 KB / Number-of Response : 705
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 101



1 名前:デフォルトの名無しさん [2012/05/04(金) 04:05:26.52 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 100
toro.2ch.net/test/read.cgi/tech/1333108892/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 157代目
toro.2ch.net/test/read.cgi/tech/1335517816/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/
ideone.com/

162 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 13:34:19.80 ]
Shinayama Programming Change Compilerって何ですか?

163 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 14:51:00.00 ]
>>162
俺にきくなよ
知らないっていってるだろ

164 名前:デフォルトの名無しさん [2012/05/08(火) 15:44:25.25 ]
>>151
インターフェイスって多重継承の道を突き進んだ延長上にあるものだぞ
それこそ Cargill が背理法として持ち出した「馬鹿げた想像」が皮肉にも現実化したもので

# 本番稼働で ((void)0) になるだけなものを使って何がしたいんだろうね

165 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 16:05:27.27 ]
C言語であることとインターフェースを使った設計が必要であるかは
全く別問題な気がする。
C++やJavaみたいなオブジェクト指向言語でインターフェースを使った設計が
広く使われているって事はC言語しか使えない環境でインターフェース的なことをやりたい
欲求も当然あるんじゃ無いかな
C言語でインターフェースの型情報を持てないのは、言語使用としてサポートしていないと言うだけで
それを実装できないというわけでは無いと思う。
例えばインターフェース型の構造体に静的に宣言された型識別子を割り当てて管理することも出来る。
当然可能であればC++で書いた方がよっぽど楽って事にはなると思うけど。

166 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 16:07:20.36 ]
>>160
そこもダメになるサイト。「ポインタp1はstを指す」のではなく、stの先頭要素を指している。
つまり、stは配列そのものではあるが参照されると先頭要素を指すポインタ型になる。
&stとした場合はstは配列だから当然に、配列を指すポインタ型になる。
そのサイトを書いた奴はその辺りを判っていないと思われる。


167 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 16:19:20.87 ]
>>160
例えばそこのページの最後にある、
>このとき str == str[0] == &str[0][0]
はナンセンス。
str[0]と& str[0][0]は型が等しいから比較できるが、strは型が違うので比較しても意味が無い。
敢えて比較したいのならば、(void *) str == (void *)str[0]とするべき。
言葉で書くなら、strとstr[0]は(型は違うが)アドレスは等しくなるとするか。

そもそも、初心者は「アドレスの概念を強いられているんだ!」と怒ってもいい。

168 名前:デフォルトの名無しさん [2012/05/08(火) 16:34:59.80 ]
なんのこっちゃ。

169 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 16:37:08.22 ]
C言語を強いられているんだ!
的な?

170 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 17:09:11.84 ]
やばい、つまんないこと書き込んでたらご飯のスイッチ入れる忘れてた



171 名前:uy mailto:sage [2012/05/08(火) 17:54:57.30 ]
>>170 しねよくず

172 名前:デフォルトの名無しさん [2012/05/08(火) 18:15:44.09 ]
言語解析(コンパイラ)の授業大学でやってるけど、さすがに
Cのアルゴリズムコード出して試験はしないよね?

オートマンとか、左再帰とかそういうのしかやってない....


173 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:21:09.82 ]
おっ盛り上がってるな!
>>164
純粋仮想関数をnewすると実行でアサーションエラーになります。 使う話で恐縮だが。
それでも、インターフェース機能が存在するのは、マストな存在だからです。
チップ組込みも肥大化しつつありますが、それに増してPC上でビッグプログラムを開発すると、
構造設計段階での有難みが身に染みます。
しかし...、CでのOOPは慣れれば快適 w
もちろん、メッセージドリブン、イベントドリブンや仮想関数テーブルのライブラリを完成させてからの話だが w


174 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:30:51.79 ]
このスレ見てると、単なるCの文法の話なのか、ソフトウェアやネットワークと
C言語の関連の話なのか全然分からない。

175 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/05/08(火) 18:33:05.07 ]
>>165 ReactOSでC言語でCOMオブジェクトを実装しているのは見たことある。

176 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:35:31.36 ]
C言語でインターフェース作らなくても、javaにあるんだからそれ使えばいいじゃん。
既成機能のほうが優れているし早いんじゃないの?

177 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:37:13.33 ]
>>173
お前はいったい何が言いたいんだ。
日本語に不自由なのか?

178 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:40:26.15 ]
C言語の知識深すぎる人ここ多いけど、そんだけ知識あるなら
エンジニアでもなればいいのに。



179 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:43:23.54 ]
高級言語って機械語を指示する言語なんだから、理論的には
他言語の機能だって、あらゆる手段を組み合わせて実装できるんじゃないの?

180 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:48:41.96 ]
別に実践的になんでも実装できるがどうかしたか。



181 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 18:55:01.76 ]
高級言語で機能実装したら絶対スピード遅くなるだろ。

182 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:05:22.94 ]
今時のCコンパイラより速く書くのは大変だぞ?

183 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:10:57.76 ]
>>178
医者なんで... 今日は非番。


184 名前:164 [2012/05/08(火) 19:18:18.01 ]
>>173
それはもしかして C++ の話?
だとすると純粋仮想関数は new できないんだが・・・
# スレチすまそ >ALL

> CでのOOPは慣れれば快適
ここは同意
C しか知らないと他の言語を漁りに行く動機がなかったりなw
# 知人にいるんだこれが

185 名前:デフォルトの名無しさん [2012/05/08(火) 19:32:27.61 ]
このスレ絶対初心者スレじゃない。
東大生でも理解できんぞ。

186 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:34:34.73 ]
上級者ほど理解できないとも思うがw

187 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:34:44.53 ]
C言語なら俺に聞け(応用編)って作ればよくね?

188 名前:デフォルトの名無しさん [2012/05/08(火) 19:43:14.48 ]
上級者は次元が違うってか?
馬鹿よせよ。

C言語のコーナーじゃ文法の本がほとんどじゃ。
俺の知ってるC言語じゃない!

189 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:44:46.53 ]
俺の知ってるC言語じゃない! (このスレはね。)



190 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:45:40.70 ]
専門的な奴でも、親切に噛み砕いて教えてくれる人と、
自分本位で専門知識ひけらかすアホがいるよな。



191 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:46:33.09 ]
まったく、どうしてアホはこうも傲慢なのかね。

192 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:50:09.67 ]
インテリ傲慢は講師になるなよ

193 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:51:46.67 ]
難しい事でも噛み砕いて教えてくれる本があれば、1万ページでも
1か月で読める。

194 名前:デフォルトの名無しさん [2012/05/08(火) 20:02:55.58 ]
K&R をガチ幼稚園児を前提に書くと何ページくらいになるかな

195 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:03:36.85 ]
いい加減、つまらんから間抜けなことばかり言うのよせや。

196 名前:デフォルトの名無しさん [2012/05/08(火) 20:05:16.61 ]
その言葉、そっくり返すぜ
C の話をしろや

197 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:06:30.26 ]
アホは黙ってろよ。

198 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:07:49.76 ]
親しみにくいからソフトウェア離れが増える。
あまりに基礎技術が進みすぎると誰もやりたいと思わん。

そういう意味で90年代後半のほかほかITブームの流れにのったやつは運がいいよな。


199 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:13:12.88 ]
プログラマーとかなりたいやつ皆無だろ。
汗流すほうが健康にもいいし楽しい。

200 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:20:58.12 ]
全く雇用が守られてないからな
文理不問で学歴不問で未経験者OKで
数年毎に新しい技術が出てきて蓄積が無意味になるんじゃ
若くて素直で人件費の安い奴隷が優先されてコストのかかる頑固な年寄りは切られるよ
その方が企業にとって都合がいいからそういうシステムになってるんだろうね全く人間がモノ扱いだよ



201 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:22:37.77 ]
プログラマーはつまらんよ
趣味で好き勝手やるのが一番

202 名前:デフォルトの名無しさん [2012/05/08(火) 20:33:21.85 ]
好き勝手は別に趣味でなくてもできるぞ
かみ砕いてやると創造性の発揮というやつだ
これができない奴は PG 以外でも結局同じこと

203 名前:デフォルトの名無しさん [2012/05/08(火) 20:35:38.37 ]
>>197

204 名前:デフォルトの名無しさん [2012/05/08(火) 20:44:44.92 ]
ブーメランw

205 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:57:35.76 ]
ここ 入門スレじゃない

206 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:15:28.53 ]
すみません、質問です。

codepad.org/XAPbYL9u

のコードが、コンパイラによって処理が出来たり出来なかったりします。
これは、このプログラムのなかに問題があるのか、それともコンパイラ側に問題が有るのでしょうか?

因にコンパイラはandroidアプリのc4droidとc/c++コンパイラです。
前者では失敗(十進数では~の下りが表示されない)、後者では成功しました。

プログラムが汚いのはスマートフォンで組んだからです。お許しを。

207 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:18:37.50 ]
よくわからんがcontを初期化しないで使ってるな

208 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:19:22.97 ]
あ、良いのかなスマン、スルーしてくれw

209 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:22:39.03 ]
>>207さん
ありがとうございます!
あんな事に気づけないとは...
下らない質問失礼しました。


210 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 00:40:35.47 ]
QをNGにするとすっきりするよ



211 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:42:57.87 ]
#defineについてお聞きしたいことが御座います。
とある環境のソースを別の環境で移行する為に、変数の値の置き換えを行いたいです。
Aプロジェクトで「Mouse.Trg&_lMOUSE」と書いているソースを、
Bにて「System.touch.trgFlag」で呼び出せるようにしたいです。

#define Mouse.Trg&_lMOUSE System.touch.trgFlag
#define Mouse.Py System.touchPos.y
と書いてみたのですが「Mouse.Trg&_lMOUSE」の「.」と「&?」が原因でエラーが出てしまっております。
このようなことはできないのでしょうか。

警告 warning: missing whitespace after the macro name
エラー error: expected primary-expression before '.' token

212 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/09(水) 01:48:49.24 ]
>>211
マクロ名は「識別子」であり、識別子として有効でない名前を指定することは出来ない。

213 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:51:22.00 ]
>>211
日本語がわからんがきっとこんな感じか。
#if PROJECT_A
# define MouseLButton() (Mouse.Trg & _lMOUSE)
#elif PROJECT_B
# define MouseLButton() System.touch.trgFlag
#endif

214 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/09(水) 01:54:29.41 ]
識別子についての詳細はこれ。
freedeai.180r.com/up/src/up11133.png

215 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:55:14.23 ]
皆様、ご回答ありがとうございます。
やはりこのようなことは#defineでは出来ないのですね・・・。

>>213
アドバイスありがとうございます。
その場合、両方のソースでMouseLButton() に置き換える感じなのでしょうか?
変数だけで指定することが出来ない場合、その方法を使用させて頂くかもしれません。

ありがとうございます!

216 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 02:01:35.24 ]
>>215
Bでstruct Mouoseを用意して適当に値を詰めるって手もあるが。

217 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 02:02:02.29 ]
ないな。

218 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 02:02:38.83 ]
お前がな。

219 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:39:17.60 ]
「return 0;」と「return (0);」の記述の仕方見るんで
違いやどっちがより正しいとかでもあったりするのかちょっと気になって
検索で調べたんだけどこれと言って見つけられないんだけど
何か知ってる人いるかな?

220 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:41:28.71 ]
文法上括弧は不要。
つけてるのは勘違いしてる間抜けだけ。



221 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:49:12.28 ]
return 0; は普通。
return (0); は神経質。
return(0); はおっちょこちょい。

222 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 12:21:20.58 ]
retrun(0); は救いようがない。

223 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 12:36:29.83 ]
#define retrun return

224 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 12:48:18.84 ]
void retrun(int x);
が死ぬ。

225 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 13:27:17.23 ]
>>219
"カーニハン リッチー return"
を検索

「K&R (第1版) でも return 文の後の式を括弧で囲っていた(中略)
if/while/swtich のように、他の式を一つ取る構文は全て () が必須なのだから、return もある方が自然」(?)
ttp://blog.kmckk.com/archives/1242942.html

226 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/09(水) 17:45:00.00 ]
>>225
alohakun かwww

227 名前:デフォルトの名無しさん mailto:// [2012/05/09(水) 18:22:58.01 ]
フリーのcコンパイラっていろいろあるみたいですけど
おすすめとかってありますか?


228 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 18:27:10.07 ]
>>227
WindowsならVisualStudio Express(C++)
MacOSXならXcodeフリー版
その他Unix系OSならgcc

でおk

229 名前:227 mailto:// [2012/05/09(水) 18:40:21.19 ]
ありがとうございました


230 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 23:23:22.31 ]
いえいえ



231 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:20:40.21 ]
フリーのcコンパイラ

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland

Digital Mars Compiler Version 8.42n
Copyright (C) Digital Mars 2000-2004. All Rights Reserved.
Written by Walter Bright www.digitalmars.com/ctg/sc.html

Open Watcom C/C++32 Compile and Link Utility Version 1.9
( Open Watcom C32 Optimizing Compiler Version 1.9 )

232 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:23:08.33 ]
フリーのcコンパイラ

License
LCC is free for personal use ...

LCC (compiler) - Wikipedia

233 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:34:28.92 ]
日本語つかえるのか?

234 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 01:34:37.88 ]
これでいいだろ。
codepad.org/

235 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 07:41:16.21 ]
ワロス

236 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:09:18.65 ]
C machineはもう公開してないんだな。

237 名前:濡鼠 [2012/05/10(木) 11:39:31.82 ]
はじめまして。
今、H8マイコンでC言語を勉強しているのですが、
実際に現場で使うのでしょうか?

238 名前:デフォルトの名無しさん [2012/05/10(木) 11:51:18.37 ]
VisualC++での話ですが、コードを書いてデバッグなしで開始で実行
した際に、消したにも関わらず、一回前に書いたコードが何故か実行され、新しく書いた
方が実行されません。何故でしょうか?

239 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:55:24.98 ]
いっぺんくりーんしてみろ

240 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:29:33.18 ]
>>238
プログラムの使い方はスレ違い。
C++の話でもスレ違い。
ビルド失敗したんじゃないの?

>>237
現場でH8を使うかどうかはスレ違い。
H8の開発現場でCを使うかどうかもスレ違い。



241 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:35:49.11 ]
H8は生産が終わったので今更やっても無駄
現場じゃ使えない
せめてSH-2かARM系

242 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 12:50:47.32 ]
>>237 使うぞ
>>241 C言語の勉強と書いてあるじゃないか。 H8かどうかなんて関係無い。 よく見てレスしろ! カス!


243 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 13:09:38.35 ]
うるせーカスだな。

244 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 13:59:43.43 ]
もう手に入らないものの勉強したってしょうがないのにね

245 名前:デフォルトの名無しさん [2012/05/10(木) 14:04:53.78 ]
へえ

246 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 14:31:38.73 ]
ふーん

247 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 14:37:16.46 ]
ルネサスも品種減らしたいので統合前の製品を色々切ってるんだよな
H8じゃなくH8Sなどならまだしばらく売るだろうけどね
量産なら一円でも安いものを選択するだろうが
入門なら後々まで役に立つものを選びたいね
RXはかなり微妙だったが…

248 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 15:25:24.07 ]
ふう

249 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 17:42:06.72 ]
そういえば VAIOのキーボードコントローラー 
IO EXPANDERに H8S2149使ってたな〜

250 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 21:55:11.28 ]
C言語のプログラム全部提出しないと単位くれないって鬼畜なん?



251 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:02:11.36 ]
そんな学校入るなよ

252 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:21:30.23 ]
必修単位ならどうせ簡単な問題だろ

253 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:26:40.97 ]
C言語のおかげで留年しましたよ。
本当に恐ろしいわ。

254 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:31:46.75 ]
>>194
数学の参考書で一行ごとに丁寧な説明があるのとかあるが
C言語の解説書もそうして欲しいよなww

馬鹿馬鹿しいと思うことでもビギナーにとっちゃ永遠に分からない事かもしれんし。

255 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:54:22.59 ]
C言語に触れて、初めてプログラミングっておもしれぇって思った

256 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:57:00.53 ]
と同時にめんどくせえって思った

257 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:43:29.11 ]
C言語に触れて、
・彼女が出来ました!
・宝くじがあたりました!
・昇進しました!
・道端で500円を拾いました!


258 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 04:27:39.32 ]
K&Rってどうなの?

259 名前:デフォルトの名無しさん [2012/05/11(金) 07:20:52.42 ]
KuriとRisu ?

260 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:47:59.16 ]
>>244
C言語の勉強でH8をたまたま使っているだけだろ。
それともなにか、C言語は手に入らないってこと言ってるのか?w



261 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:54:45.98 ]
IDE無かったら絶対に再帰なんてトレース出来んかったわ。

262 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 08:59:31.53 ]
IDEの意味知ってる?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<155KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef