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


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

GCCについて part8



1 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:07:39 ]
史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。

GNU本家のGCCページ
gcc.gnu.org/

Binutils - Collection of binary utilities ←これも必要だぞ。
www.gnu.org/directory/GNU/binutils.html

GNU Binutils
sources.redhat.com/binutils/

GCC online documentation
gcc.gnu.org/onlinedocs/

Installing GCC
gcc.gnu.org/install/

GCC Timeline
gcc.gnu.org/releases.html#timeline

Calendar
gcc.gnu.org/develop.html#timeline

前スレ
GCCについて part7
pc11.2ch.net/test/read.cgi/tech/1145357824/l50

428 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:49:38 ]
以下のような関数をgccでビルドするとき、
最適化オプションを何もつけていないのに
return -1;の部分が最適化されて消えてしまうことってありますか?

int func(void) {
// この関数が呼ばれた時点でバグなのでデバッグ時は無条件にアサートさせる。
assert(false);

// リリース時に万が一呼ばれたときはエラー値を戻す。
return -1;

}

429 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:51:50 ]
gcc -S でソース嫁


430 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:07:12 ]
>>428
gccは最適化ナシでも簡単なフロー解析(この場合、あからさまに到達不能なブロック)はやっている。

assert() 内部では __attribute__((noreturn)) なファンクションが呼ばれている。

あとはわかるな?

431 名前:428 mailto:sage [2008/06/15(日) 15:55:11 ]
>>429,430
どうもです。

以下のソースを
gcc -S -o test.s test.c

gcc -S -DNDEBUG -o test2.s test.c

とすると挙動がわかりました。
ありがとうございました。

#include <assert.h>
void f(void)
{
assert(0);

int i = 0;
++i;

}

432 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:00:22 ]
複数の-g系オプションを並べた場合は
後ろの方が強いのですか?

gcc -ggdb -gxxx

433 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:12:53 ]
gcc 4.3,ひどいな…

434 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:56:53 ]
いつものごとく4.5くらいまで進めば安定するんでないかい。

ということで3.4使いつづけとります。



435 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:39:25 ]
俺にとって、4.3はC++0xのためだけに存在しているようなもの。

436 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:02:01 ]
openmpのこともたまには思い出して上げてください



437 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:09:27 ]
>>436
思い出してもageません?

438 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:22:48 ]
Converting GCC to C++
lwn.net/Articles/286539/

439 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:38:48 ]
>>438
これはつまり
gcc cxx.cpp
ができるようにするからくりというわけ?

440 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:36:18 ]
GCC を C++ に移植したいらしい。

441 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:51:26 ]
The FSF is not writing the code. にワロタ

442 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:14:20 ]
>>440
そっか逆か。ありがと。

443 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:08:06 ]
もういっそJavaでもいいんじゃね派が登場して
混沌としてほしい

444 名前:デフォルトの名無しさん [2008/06/20(金) 08:48:26 ]
なんてアグレッシブな!と思ったけどブランチ作っただけでコードはまだか。
内部のモジュール化が進むといいなあ。

445 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:07:28 ]
JavaでいいならCOINS

446 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 23:26:34 ]
GCC 3.4 x86_64 で -mno-sse が効かないんですが、理由が分かる人はいますか?

gcc -S -fverbose-asm の出力を見ると、-mno-sse を付けているにも関わらず -msse が有効になっています
実際、アセンブリを見ても SSE 系の命令が出力されています



447 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 01:01:06 ]
>>446
-mfpmath=387

448 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 01:56:55 ]
>>447
それを付けても駄目みたいです
また GCC 4 系ではそれを付けなくても -mno-sse が有効になります

449 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 02:01:23 ]
>>446
>GCC 3.4 x86_64 で -mno-sse が効かないんですが、理由が分かる人はいますか?

横な質問なんですけどx86_64でSSEの無いCPUって何ですか?

450 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 02:28:49 ]
>>449
あまり詳しいことは書けないけど
XMM レジスタを使わないことが前提のアセンブリコードや CPU エミュレータがあるので
C ソースファイルをコンパイルするときに SSE コードを生成して欲しくない

あるいは浮動小数点演算自体の使用を禁止する運用も可能だけど
その場合、浮動小数点演算を使用しているソースをコンパイルエラーで弾くくらいはする必要がある

451 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 16:46:13 ]
-mno-sse2 なんてオプションはなかったよなw

452 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:25:02 ]
>>451

GCC 4 なら -mno-sse だけで -mno-sse2 -mno-sse3 まで付きますし
GCC 3.4 はそれらを併用しても駄目ですね

453 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:51:05 ]
gccのことは知らないが、
windowsだとlong modeでFDP/MMX系のレジスタは一切使わない。
スタックフレームもレジスタ優先でほとんど使わないし、
そのとき実数データの受け渡しにXMMレジスタ使ってる。
XMM使うなというのが無理な話状態なのです。

454 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 00:18:00 ]
すみません、gdbの質問をしたいのですがここでもいいですか?

gdbの中でグローバル変数の一覧を取得(表示)する方法はありますかね?
ローカル変数に関してはinfo localsがありますが。

455 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 01:05:59 ]
shell から nm 呼ぶってのは無し?

456 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 02:39:05 ]
info variables



457 名前:454 mailto:sage [2008/07/07(月) 09:49:28 ]
>>455
えっとグローバルなbssとdataのシンボルを見ろということですかね?
やってみたんですが、自分がいじってるプログラムではどうもconstな変数が
textにいるように見えるんですが... ldの挙動をコントロールしているようで。
デバッグのときだけ「普通」にリンクするというのはありかもしれませんが...

>>456
やってみるとなんかエントリーが重複して見えるんですが、そんなもんですかね。
ちなみにinfo localsと違って値を表示してくれたりはしないんですね。

458 名前:デフォルトの名無しさん mailto:sega [2008/07/12(土) 17:05:47 ]
コンパイルをした日時を埋め込む・取り出す方法ってありますか?

今はmake時に引数で`date`なんかを渡す方法を使ってるけど
そのdefineを使うソースがコンパイルの対象になっていない限り
反映されないので、いまいち使い勝手がわるいんです

459 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:12:50 ]
シェルで、日時を何かのファイルに書き込んで、
それからコンパイル。

460 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:15:10 ]
そのソースを毎回必ずコンパイルするようmakefileを書けばいいのだと思うんだけど

461 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:26:04 ]
>>460
その方向でやってみます
となると、次はMakefileスレだな

462 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 17:43:50 ]
__DATE__ とかないんだっけ
フォーマット考えると自分でやったがいいか

463 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:08:17 ]
all: hoge ・・・・・・・・
hoge:
 絶対コンパイルしたいファイルをコンパイル
でいいんじゃね?

464 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 20:39:26 ]
GNUmakeなら.PHONYとか

465 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:02:58 ]
ファイルの一番後ろに日付書いといたらいいんじゃないの

466 名前:458 mailto:sage [2008/07/12(土) 21:20:32 ]
やっぱ>>460の方法はやめました

コンパイルする必要がないときでもmake叩くと必ずコンパイルされてしまう
というのは俺の精神衛生上よくないことがわかりました



467 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:36:37 ]
コンパイルした実行ファイルの日付をチェックすればええんちゃう?

468 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:51:20 ]
埋め込むんじゃなく、コンパイルするたびに
バイナリのMD5ハッシュと時刻をログファイルに記録すればいいんじゃね。

469 名前:デフォルトの名無しさん [2008/07/13(日) 01:02:01 ]
質問です。
インストールしたてのcygwinにgcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
がインストールされているので、gccを最新版の4.3.1にしようと思ったのですが。
configure --prefix=/usr/local とし、
make したら
/home/***/gcc-4.3.1/i686-pc-cygwin/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp:108: error: invalid use of incomplete type 'class __gnu_pbds::detail::thin_heap_<Value_Type, Cmp_Fn, Allocator>'
のところで詰まってビルドが止まってしまいます。
この原因についてご存知の方いらっしゃいませんか?

470 名前:458 mailto:sage [2008/07/13(日) 01:33:13 ]
>>468
それも考えたのですが、なんか面倒なので
リンカに頑張ってもらう方法を調べることにします

471 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 09:04:25 ]
>>466
それはmakefileの書き方でいくらでも回避できるんじゃね?
最後のlinkする所のtargetの中で依存関係無しにちょろっとccしてしまえばいいんじゃ

472 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:07:05 ]
cat `date` >> hogehoge

とかやって、

strings -a hogehoge
とかやると、読めなくもない。

473 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:09:39 ]
stringsを使わなくても、

tail -c [文字数] hogehoge
でもいける。
後から偽の時刻を埋め込まれたら知らんけど。

474 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 10:36:17 ]
いずれにしろ -D で渡すのも気に入らないとか、
コンパイラのほうで実現するのは気持ち悪いとか言ってるから、
スクリプトとか他のもので好きなように実現するのがいいんじゃないのか?

475 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:08:07 ]
%%%%%%%%%%CREATION_DATE%%%%%%%%%%%%%%% とか他にありえない文字列で
領域を確保しておいて、ビルドした後で実行ファイル(ライブラリかも知らんが)を
直接書き換えればいいんでは。

476 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:12:12 ]
foo: $(shell date).o

$(shell date).c:



477 名前:デフォルトの名無しさん [2008/07/17(木) 04:56:52 ]
VC++からの移行組です。
VC++のソースをGCCでmakeしようとして、
いくつかの違いのエラーで悩まされてしまいました。

それで、どうやっても解決策・代用策が思い浮かばない点を質問させてください。

this->m_char_table[ (add_unsigned<T>::type)c] = this->m_char_table_index;

このように、テンプレートの型をunsignedにキャストして利用したいのですが
GCCではエラーとなります。
こういう使い方は出来ないのでしょうか?
また代用の方法はないのでしょうか?

gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
を使用しています。

よろしくお願いします。

478 名前:マイク ◆yrBrqfF1Ew mailto:sage [2008/07/17(木) 07:26:46 ]
おっおっおっ⊂ニ( ^ω^)⊃
ちょい書き込みtest

479 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:13:45 ]
>>477
エラー張ってくれよ。

480 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:14:20 ]
あとcの型な。

481 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:51:06 ]
>>458
__DATE__ __TIME__でいける。


const char aaa[] = __DATE__ __TIME__;


482 名前:477 mailto:sage [2008/07/17(木) 13:49:10 ]
>>480
cの型はテンプレート(T)です。
基本的には、char、wchar_t、int、shortなどを取ります。
それ以外の型が入れられる事はないようにはなっていますが
基本的には特定はされません。(自分用のライブラリなので整数以外を取る事はありません)

>>479
error: dependent-name ` add_unsigned<T>::type' is parsed as a non-type, but instantiation yields a type
です。役に立ちますでしょうか?


よろしくお願いします。

483 名前:477 mailto:sage [2008/07/17(木) 13:52:17 ]
自己解決しました。
そのエラーメッセージの後に
note: say `typename add_unsigned<T>::type' if a type is meant
と出ており、そのとおりやったら解決しました。
盲点でした。

どうもありがとうございました。

484 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:55:51 ]
どの辺が盲点なのかと。
英語で書いてあるところか?

485 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:04:14 ]
つーかそれ、VC++でもエラーにならね?
VC++6.0組?

486 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:19:24 ]
>>485
6.0、2003、2005、2008で試したけど問題にならんよ。
VC++はなぁなぁだからなぁ・・・。
IEとかと同じで、その辺がMSの製品って好まれるんだろうね。
いいとは思わんけど、ちゃんと規格にそってる方が敬遠される状態は勘弁してもらいたい。



487 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:23:04 ]
いや、この場合はGCCの規格が悪いと思う。
普通に考えればtypenameをキャスト時にするのはおかしいもの。

次に>>477が詰まるのは、wchar_tかなw
wchar_tを取りうるって言ってるし。
GCCのwchar_tは欠陥品な上、
文字コードの統一の問題が・・・w

488 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:02:46 ]
>>487
5.4 Explicit type conversion (cast notation)
8.1 Type names
7.1.5.3 Elaborated type specifiers
くらい読めよ。

あと「GCCの規格」なんてバカな言葉は使うな。
どうせいうなら「GCCの仕様」あるいは「GCCの実装」だ。

wchar_tもいい加減なこと言ってるよなあ。

489 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:46:45 ]
典型的な、コンパイラとライブラリの区別がつかないひと


490 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:59:02 ]
いや、GCCの仕様は馬鹿だろ
あれほど必要の無い理解しがたい仕様をつめるのは
頭の悪い俺には理解できんよ(笑)

491 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 16:00:39 ]
>>489
typename 修飾子って本来ライブラリの管轄じゃないだろ・・・

492 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 16:03:54 ]
キャストの問題もライブラリの管轄とは思えんが・・・

493 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:34:46 ]
wchar_tの話だろ。


494 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:39:14 ]
>>484
最初からエラーメッセージ張らない人だから、
そもそもエラーメッセージを読まない人なんじゃないかとw

495 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:59:12 ]
むしろ、エラーメッセージしか見なかったんだろ。
最初の質問で、エラーの内容は理解してると思われる。
ただ、エラー以外をみなかった。ということだろう。

いやね、俺もその傾向あるからわかるんだが
コンパイラってだいたいロクなメッセージ伝えてこないから
エラーそのものしか見る気しないのよ。そのエラーすら別の箇所による問題によって
引き起こされてたりするので、そのまんま信じるわけじゃないし。
1つエラー出ると、大量にどうでもいいメッセージが出るから、頭の中でフィルタかけないとエラーは解決できない。


496 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:22:53 ]
寧ろ、そんな発想だからフィルタが必要なんだろ。



497 名前:458 mailto:sage [2008/07/18(金) 09:44:05 ]
>>481
そのファイルがコンパイルされた日時ならそれでいいけど・・・

498 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:12:00 ]
何が望みなんだかわかんねえ

499 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:25:03 ]
>>497
Makefileで常にコンパイルするファイルをそれにしておけばいいんじゃね

500 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 12:14:13 ]
>>498
消えろ

501 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 12:17:07 ]
俺もよくわからない。
.oが出来た日時をCのソースから利用したい。
a.outが出来た日時をCのソースから利用したい。
どっちなの? 前者なら>>481でFAでしょ?
後者なら>>464の方法で出来るよね。
もっと違うこと?

502 名前:458 mailto:sage [2008/07/18(金) 13:10:48 ]
>>501
バージョンを取得する関数のあるソースを hoge.c としたとき
hoge.o を他の全オブジェクトに依存させればいいのかな?
やってみるよ。

503 名前:458 mailto:sage [2008/07/18(金) 13:15:23 ]
できた。ありがとう >>501

>>499
コンパイルの必要が無いときはコンパイルしたくないんですよ。

504 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:04:35 ]
501だが、>>501>>502眺めて
30秒考えてようやく仕様が分かったw
>>501の後者って事だよね。

>>464の言っている別解だが、

.PHONY: hoge.o

これで「hoge.o is up to date」になることなく、
hoge.oが必要とされれば、タイムスタンプ比較をショートカットして、
毎回ルールに基づいて生成しようとする。で、

a.out: $(OBJS) hoge.o

としておけばいい。


505 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:56:12 ]
>>504
それソースが更新されてないときでも、生成されね?

506 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:17:45 ]
a.out が更新されたってことは生成必要なんじゃ?



507 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:50:47 ]
a.out: $(OBJS)
$(COMPILE) $(CFLAGS) hoge.c
$(LINK) $(OBJS) hoge.o


508 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:14:44 ]
BCB使っていて興味本位にGCC触ってみたんですけど
下のコードって通らない、というか間違った書き方なんでしょうか?
環境はubuntuのg++4.1.3です

template< typename T >
class test
{
friend class test< T >; <<ここで怒られてる
public:
int aaa;
};


509 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:20:07 ]
エラーメッセージは?
読んだ?




510 名前:508 mailto:sage [2008/07/18(金) 17:38:43 ]
〜 error: class 'test<T>' implicitly friends with itself
と出ていました。

英語もわからずGUIでしか操作したことないとGCCなんて使うこと出来なさそうだなぁ。


511 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:45:22 ]
「自分自身はいちいち宣言しなくてもfriendされてるのと同じことできるよ」と言っています。

512 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:51:40 ]
ええええ!
・・・実体が違うなら同じクラスでもpraivateに触れないと思ってました。
ありがとう!

513 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:56:11 ]
なんか .PHONY が誤解されてる気がする。

514 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:00:41 ]
>>512
ちっとは英語の勉強しようよ。なんだそのスペリングミスは。

515 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:08:09 ]
わざとじゃねーのか。
さすがにキーワード間違えないだろ

516 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:32:08 ]
playmateに触れたい



517 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:32:51 ]
あるオブジェクトファイルがリンクされたかどうかって・・・というか、
あるシンボルの中身が存在するかどうかってソースレベルでチェックできる?

存在しないシンボルを参照してもリンカがエラーを吐かないことが前提で・・・

518 名前:517 mailto:sage [2008/07/23(水) 00:47:49 ]
__attribute__((weak_import)) が自分のやりたいことに合致しそうだけど
サポートしてるのは MacOS X だけっぽい
諦めてほかの方法を探すかな

519 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:29:49 ]
何をしたいのかがわからない。
実行時にシンボルの中身が存在するか判定したいんだったら遅延リンクでもいいんじゃね?

520 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:48:10 ]
>>517
つ dlopen(3)

521 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 06:42:03 ]
>>517
オブジェクトのリンク状況つうのは、

foo.c
#include <stdio.h>

int bar_magic = 0 __attribute__ ((weak));

int is_bar(void)
{
return 0;
}

int main(void)
{
 printf("%d\n", is_bar());
 return 0;
}

bar.c
int is_bar(void)
{
 return 1;
}

とかやって、
$ gcc -o foo foo.c && ./foo
$ gcc -o foo foo.c bar.c && ./foo
の結果が変わるでいいんですか?


522 名前:517 mailto:sage [2008/07/23(水) 19:07:38 ]
>>519
質問の仕方が下手ですまん。
最終的には組み込む予定のとある関数を、一時的に外したいが #ifdef などでソースを切り分けたくない。
シンボルの中身の有無がプログラム中から判別できれば、 makefile 側でリンクするオブジェクトを
管理するだけなので楽かなと思った。

>>520
条件の後出しで申し訳ないが、組み込み環境なので動的リンクはちょっときつい。

>>521
weak_import じゃなくて weak で良かったのか。どうもありがとう!

int weak_func(void) __attribute__ ((weak));
/* int weak_func(void) { return 1; } */

int main(void)
{
  if (weak_func)
  {
    dbg_print("Function exist\n");
  }
  else
  {
    dbg_print("Function not exist\n");
  }
  return 0;
}

523 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:59:40 ]
リンクエラーは解決したか?

524 名前:517 mailto:sage [2008/07/23(水) 23:48:01 ]
>>523
俺宛てかな?実はそこが問題になるとはあまり考えてなかった。
中身が無いことを前提にしたシンボル参照をソースで意図出来れば、
当然リンカもエラーは吐かないだろうと思ってたので。(そしてその通りになった)
でも気にしてくれてありがとう。

今後の予定としては、間違えて同名のシンボルを別のソースで定義してしまい
関数が上書きされたことに気づかずバグに苦しむ。というストーリーを計画しています。

525 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:14:00 ]
GCCのコンパイルがおわらねぇ

526 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 17:17:21 ]
まあ環境によっては2日仕事だな



527 名前:デフォルトの名無しさん [2008/07/24(木) 18:37:23 ]
マジか…
400MHzのアナルスペックで3時間くらい放置してる絶望

528 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 19:31:19 ]
余計なの削除してやり直すか…






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

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

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