【Console Application】外部関数 31【学習記】

打鍵数多くなる使い方の関数をライブラリ化する話🤤

Q.
で、どんな外部関数なの?
A.
printf 🤪

→Objective-C++ は C++ なので可変引数は template で処理するのかと思いきや C の手法va_listじゃないと上手く行かない
→何故なら C でライブラリが作られているから

#Objective_C #import
#可変引数 #template #va_list
#学習記


可変長引数

何をやりたいかと言うと…

画像1

こんなのコピペできてもめんどくさくて嫌だわ🙄
って話🤤
サンドイッチっていうのがまたもうめんどさ爆上げなのよね😞

て事でこの可変長の stringWithFormat がどういう宣言になってるのか調べようね🤤

stringWithFormat
https://rusutikaa.github.io/docs/developer.apple.com2/documentation/foundation/nsstring/1497275-stringwithformat_language-objc.html

一発で出てきた🤪有能!?

はて、可変長引数は記事が結構出てくるけどそれをそのまま可変長関数へ渡す、という記事は余り出てこないね🤔
可能な筈だけど見つかるかな…?

C言語で可変長引数をそのまま別の関数に渡したい
https://qiita.com/bamchoh/items/9bec0febc2d30cd1a30e

そう、大体が vprintf で置き換える様なヤリクチしか出てこない😞
タイトルは目的そのものだけど内容はコレジャナイ🙄
いや、まぁこちらの目的も printf なんだからこの記事でも満足なんだけど JSJavaScript で言う apply(this,arguments) みたいな事ができるようになりたいわけなのよね🤔

可変長引数をもつ関数(printf, ioctl, etc..)をラップする方法まとめ
https://qiita.com/koara-local/items/585755faac70c8b37b5b

検索語の "C言語" を "C++" に変えたらすぐ出てきた🤪
今、拡張子が .mm なのでこれで行こうかな🤤

でもテンプレートをヘッダに分離するとなんかまずかった様な…🤔

C++ テンプレート ヘッダと実装を別にした時に起こること
https://qiita.com/i153/items/38f9688a9c80b2cb7da7

そう、これこれ🙄
テンプレートをヘッダに書いておくのは大丈夫だけど受け取り型の具体的な状態のものをソース側で書いてないと最終的にリンクできないってやつ😞
テンプレートなんだから生成してよって思わなくもない🤪
この記事は演算関数なので引数が具体的に int になってるプロトタイプを書いて解決してるけど、今回やろうとしてるのはそういうのじゃないのよね🙄
不定のまま生成されないと困る😞

C++ 可変長引数テンプレートのお話
https://cflat-inc.hatenablog.com/entry/20121210/1355092802

これを見るとなんか「とりあえずそのままやってみ?」って感じになった🤤
とりあえずやってみるぞなもし🤔

画像2

なんか git の操作よく分からなくて適当に弄ってたら壊れた😞
完全に作り直しになった😞
こういう不明な挙動を瞬断できないから英語のみのアプリ大嫌い😞
大昔3.xとか xcode は日本語化できた時代も有ったけど言語対応がめんどくさすぎてやめちゃったのよね🙄
OS の言語対応だけで手一杯ってやつね😞

画像3

はぁ…またここからか…😞


作り直してから

画像4

角括弧が足りないって🙄
どう見ても足りてるのに…😞
多分、角括弧と template の相性が良くないんだろうなぁ…回避方法有るんだろうか?

(2時間程探索)

可変長引数のログを出力する(C/C++, Android, Objective-C)
https://qiita.com/chibi929/items/36e98182e988d76f500f

画像5

さすがいんたーねっつ!🤪
エラー消えた!🤤
まぁ、 C++ で書けるようにするのはオプションであって基本は C だし呼び出しも C 方式だから C++ の方式で呼ぼうとしても怒られるから C の手順で書くかどこかで変換終わらせて C++ じゃない状態で渡すしかないよね🤤

じゃぁこれを1行に…

画像6

………🤔

………🙄

………🤪

可読性が悪すぎるww
戻そ😞

画像7


次回は

作った関数に置き換えて動作確認かな🤤
すぐ終わる様なら次に進む予定🤪🚩

この記事が気に入ったらサポートをしてみませんか?