[過去ログ] スレ立てるまでもない質問はここで 163匹目 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
603
(2): (ワッチョイ 1e7b-AGaU) 2023/02/14(火)19:33 ID:JHKTqnVN0(1) AAS
マクロ展開についてあっているか教えてもらえませんか
よろしぅお願いします

字列化演算子 #というのがあることはしらべました

#define ldbl_strong_alias(name, aliasname) strong_alias(name, aliasname)
#define strong_alias(name, aliasname) _strong_alias(name, aliasname)
#define _strong_alias(name, aliasname) \
  extern __typeof(name) aliasname __attribute__ ((alias (#name)))

ldbl_strong_alias(__printf, printf)

strong_alias(__pritf, printf)

_strong_alias(__pritf, printf)

extern __typeof(name) aliasname __attribute__ ((alias ("__printf")))

extern int printf __printf
604: (ワッチョイ 0710-ihJJ) 2023/02/14(火)21:59 ID:wd9US9tw0(1) AAS
>>603
マクロ名がややこしすぎて良くわからん。
1行ずつ実際に実行してみて、どうなるか試してみるのが良いと思う。
605: (ワッチョイ 1e7b-AGaU) 2023/02/15(水)01:59 ID:DEZW3Rub0(1/2) AAS
gcc -E hogesource.c
Eスイッチでマクロ展開の結果が表示されて止まるのがわかった
思ったような結果が得られなかった
606: (ワッチョイ 1e8f-qcb7) 2023/02/15(水)02:37 ID:Q403dQBP0(1) AAS
>>603
誤字は飛ばすのと__typeof, __attribute__を既知としていいなら、4つ目と5つ目が違う
607
(1): (ワッチョイ c69a-X0yo) 2023/02/15(水)03:29 ID:kNXNSVol0(1) AAS
glibcのマクロ? ビルドエラーを自分で調べてる?
608: (ワッチョイ 1e7b-AGaU) 2023/02/15(水)06:54 ID:DEZW3Rub0(2/2) AAS
おはようございます

>>607
glibcのソースコードでprint.cファイルの中身が

int
__printf (const char *format, ...) { } になってます

ldbl_strong_alias()マクロでprintf()というエイリアスが定義されるそうなんです
ldbl_strong_alias()定義を追うんですけど

sysdeps/generic/math_ldbl_opt.h
#define ldbl_strong_alias(name, aliasname) strong_alias(name, aliasname)

include/libc-symbols.h
#define strong_alias(name, aliasname) _strong_alias(name, aliasname)
#define _strong_alias(name, aliasname) \
  extern __typeof(name) aliasname __attribute__ ((alias (#name)));


printfが__printfになるのがわからなくて質問かかせてもらいました
609: (ワッチョイ 1ecf-8lmq) 2023/02/15(水)10:26 ID:jBF4rRuI0(1) AAS
__printf()という関数の型とか引数定義を引用してprintfのプロトタイプを作ってる
作られるのはextern int printf __printfじゃなくてextern int printf(const char *format, ...)みたいな関数プロトタイプ
アンダースコアがついてる語はGCCの言語拡張でオブジェクトの型を取得したりコンパイラに関数の性質を教えたりしてる

また、コードを示すなら手打ちしないでコピーと貼り付けを使え
誤字があったり全角空白でインデントなんかしてるとあんたの知識が怪しげであることを読む側に暗示させるし
コードの他の箇所すべてを注意深くチェックしないといけなくなる
自分が示したコードは回答するために他人がそのままコピーして実行するもんだくらいに思って示した方がいい
610: (ワッチョイ 4a4b-C/iO) 2023/02/15(水)20:05 ID:D5gZ9dH30(1/3) AAS
全角スペースインデントは許してやれ
611
(2): (ワッチョイ 8606-mefD) 2023/02/15(水)21:14 ID:OdKSYE2s0(1/2) AAS
>>581で質問した者ですが、>>582で教えてもらった#errorを使うにあたって#ifで分岐させようとしたところ
文字列比較が出来ないみたいで困っています
#if strcmp(MODE, "jikken") == 0
#error
#endif
↑こんなことをやりたいのですがいい方法ないでしょうか
612: (ワッチョイ 4a4b-C/iO) 2023/02/15(水)21:23 ID:D5gZ9dH30(2/3) AAS
プリプロセッサに変数ってあるの?
613: 574 (ワッチョイ 0710-ihJJ) 2023/02/15(水)22:06 ID:GzER83db0(1) AAS
このスレだと回答無さそうなので、
OpenGL/Vulkanスレ Part23のスレを立てて、聞いてみた方が良いのかな?

↓スレの中を見てみたらopenGLと関係なさそうな内容だったので、
質問には適してい無さそうでした。
2chスレ:tech
614
(1): (ワッチョイ 2b69-t1ev) 2023/02/15(水)22:15 ID:3Nk0h2mJ0(1) AAS
>>611
伝統的にDebugビルド/Rereaseビルドってのがあって
c標準的にはNDEBUGがdefineされてたらRereaseビルド
#ifndef NDEBUG
// Debugビルド時のみ
#endif

VCだと_DEBUGも使ってて、defineされてたらDebugビルド
#ifdef _DEBUG
// Debugビルド時のみ
#endif
615
(1): (ワッチョイ ca7c-D0vN) 2023/02/15(水)22:35 ID:aDsLy0wQ0(1/2) AAS
>>611のコードにワロタwww

やりたいことをやるなら
#define JIKKEN 1 // これを0にすれば#ifdefの処理はコンパイルされない1にすればされる

#ifdef JIKKEN
コード
#endif
616: (ワッチョイ ca7c-D0vN) 2023/02/15(水)22:37 ID:aDsLy0wQ0(2/2) AAS
あ、#ifdefじゃなくて#ifか
#ifdefだったら
#define JIKKENをコメントアウトするかしないかだな
617
(1): (ワッチョイ 8606-mefD) 2023/02/15(水)23:33 ID:OdKSYE2s0(2/2) AAS
>>614-615
ありがとうございます
数値比較や#if definedで判定できるのはわかるのですが、文字列を判定したいです
#errorにこだわらず、make用のシェルスクリプトを使うことにしてbash上で処理した方が楽でしょうか
コンパイルしたあとにソースをgrepしてjikkenが含まれていたらコンパイル後のファイルを削除しちゃうとか
618: (ワッチョイ 4a4b-C/iO) 2023/02/15(水)23:37 ID:D5gZ9dH30(3/3) AAS
いまいちよくわからない
文字列を判定するにしてもマクロは定数しか無理だし定数なら定数マクロがあるし…
619: (ワッチョイ 4a8e-2YIw) 2023/02/16(木)01:19 ID:mS9XdiMM0(1/5) AAS
不満なら自分でプリプロセッサーを作れよ
620
(1): (ワッチョイ 0710-k1DT) 2023/02/16(木)01:30 ID:1LGfLHFu0(1/2) AAS
>>617
やりたいことって文字列比較じゃなくて定義済み一覧から選択したいってことじゃないの
#define JIKKEN 1
#define HONBAN 2

// ここを切り替え
#define MODE JIKKEN
//#define MODE HONBAN

#if MODE == JIKKEN
#error
#endif
621
(1): 611 (ワッチョイ 8606-mefD) 2023/02/16(木)08:57 ID:t3UIICRg0(1) AAS
>>620
その後のコード部分で使っている定数なので、そのまま文字列比較できれば一番楽かなと思って#ifでの文字列比較の方法を知りたかったのですが、
おっしゃる通りMODEは数値にするようにして、後ろのコード部分を書き換えてしまうという手もあるのかなと思いました
printf("MODE = %s.\n", MODE);

if(MODE == 1){printf("MODE = jikken.\n");}
else{printf("MODE = honban.\n");}
みたいな
622: (テテンテンテン MMc6-Zj6Q) 2023/02/16(木)13:39 ID:cjF4BAdEM(1/4) AAS
gccをソースからビルドしようと思っているのですがパソコンを新たに用意するしかないんですか?
クラウド上でビルドできるサービスもありませんか?
623: (ワッチョイ 0f02-D0vN) 2023/02/16(木)14:41 ID:NxczGkB60(1/3) AAS
あるとおもうが
そもそもGCCビルド用に特化してなく家PCでやったほうが手軽とおもうが
有料レンタルでも確実に成功するとはかぎらないかと
624
(1): (ワッチョイ 6a10-Vplv) 2023/02/16(木)14:42 ID:8Y4Kmok50(1/2) AAS
Linux環境借りられるサービスなんてごまんとあるし
ビルドしたいだけならGitHubのCIという手もある
625: (ワッチョイ 0f02-D0vN) 2023/02/16(木)14:46 ID:NxczGkB60(2/3) AAS
awsでAmazon Linux AMIに最新のGCCを入れる
外部リンク:tech.ckme.co.jp
626: (テテンテンテン MMc6-Zj6Q) 2023/02/16(木)15:19 ID:QUL4lFADM(1/2) AAS
>>624
それだと何時間かかるんですか??
627: (テテンテンテン MMc6-Zj6Q) 2023/02/16(木)15:21 ID:QUL4lFADM(2/2) AAS
なるべく短時間で終わらせたいです
1~2時間でビルドできるのを目指すのならやっぱり買わないといけませんか?
628
(1): (ワッチョイ 4a8e-2YIw) 2023/02/16(木)16:49 ID:mS9XdiMM0(2/5) AAS
というかスマホしかないのか?貧乏なのか?
629
(2): (テテンテンテン MMc6-Zj6Q) 2023/02/16(木)16:52 ID:cjF4BAdEM(2/4) AAS
>>628
メモリ8gbのmbp16しかないです
予算は20万ほどでパソコンを買おうかとすら思ってます
貧乏です
630: (ワッチョイ 4a8e-2YIw) 2023/02/16(木)16:54 ID:mS9XdiMM0(3/5) AAS
>>629
メモリーの問題か
vmware fusion player入れて2か3GBメモリーの仮想マシンのLinuxを作ればいけるかも
631
(1): (ワッチョイ 4a8e-2YIw) 2023/02/16(木)16:58 ID:mS9XdiMM0(4/5) AAS
>>629
パソコンを買うなら中古のデスクトップが安い
モニターも含めて5万円以下で十分
632
(1): (テテンテンテン MMc6-Zj6Q) 2023/02/16(木)17:08 ID:cjF4BAdEM(3/4) AAS
>>631
1~2時間でビルド終わるスペックをそれで目指せるのですか?
1-
あと 370 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.011s