私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレGCCについて part8
gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ☆
レスフィルター : (試験中)
スレ違いだったらすみません。
GCCでコンパイル時と別のコンパイラでコンパイル時とを
#ifで分けたいのですが、GCCでコンパイル時必ずdefineされる
マクロってありますか?
GCCでコンパイル時と別のコンパイラでコンパイル時とを
#ifで分けたいのですが、GCCでコンパイル時必ずdefineされる
マクロってありますか?
#if defined( __GNUC__ )
#if ( __GNUC__ >= 4 )
かな
#if ( __GNUC__ >= 4 )
かな
IntelのCコンパイラだとデフォルトでは>>153をdefineしている(オプションで変更可)
特殊かもしれんが
特殊かもしれんが
RHLE version3 のサポートが終了してしまうので、
gcc 2.9.6
gcc 3.2.3
から、
RELE version5のgcc 4..xに変更したんだけど、コードの修正メンドくせー、
互換性無いのって悲しいね。
gcc 2.9.6
gcc 3.2.3
から、
RELE version5のgcc 4..xに変更したんだけど、コードの修正メンドくせー、
互換性無いのって悲しいね。
確かにコードが汚いことが原因で
トークンの連結
型(int -> bool)
プロトタイプ宣言
関係が9割超
トークンの連結
型(int -> bool)
プロトタイプ宣言
関係が9割超
http://gcc.gnu.org/ml/gcc/2008-01/msg00023.html
バグ潰し終わらねー感じ
使ってみてもICEとかc++のスコープとか色々おかしい印象がある
開発者がんばってくれー
バグ潰し終わらねー感じ
使ってみてもICEとかc++のスコープとか色々おかしい印象がある
開発者がんばってくれー
>>165
mudflapというオプションを初めて知った。 ひで~ネーミングだな。
mudflapというオプションを初めて知った。 ひで~ネーミングだな。
gcc(3.4)でSJISファイルのコンパイルでうまくいかないので、ご教授いただけたらと思います。
> cat a.c
#include "stdio.h"
#define AAA(a) BBB(#a)
void BBB(char *str) {
printf("%s\n", str);
}
int main() {
AAA(あ"い");
BBB("あ\"い\"");
}
> gcc --input-charset=cp932 --exec-charset=cp932 a.c
> a.out
あ"磚
あ"い"
AAAの方とBBBの方で両方同じ結果が得られそうなのですが、
AAAの方でうまくいっていないのを解決したいと思っています。
ここでは標準出力していますが、内部文字コードはSJISのまま解決したいと思っています。
よろしくお願いいたします。
> cat a.c
#include "stdio.h"
#define AAA(a) BBB(#a)
void BBB(char *str) {
printf("%s\n", str);
}
int main() {
AAA(あ"い");
BBB("あ\"い\"");
}
> gcc --input-charset=cp932 --exec-charset=cp932 a.c
> a.out
あ"磚
あ"い"
AAAの方とBBBの方で両方同じ結果が得られそうなのですが、
AAAの方でうまくいっていないのを解決したいと思っています。
ここでは標準出力していますが、内部文字コードはSJISのまま解決したいと思っています。
よろしくお願いいたします。
CスレでGCCの範囲だから、すれ違いと言われてここに来ました。
http://homepage2.nifty.com/m_kamada/fractalp.htm#mandelbmp_c
のサイトにある、complex.hを読んでいるんですが、
gccでマクロを展開してここのソースを読むと、
/* setjmp(cjmpenv)の返却値 */
#define C_DIVIDE_BY_ZERO 1 /* 0で除算しようとした */
#define C_ARG_ZERO 2 /* 0の角度を求めようとした */
略
#endif
#if __GNUC__==2
#define complex __complex__
#define Re(z) (__real__ (z))
#define Im(z) (__imag__ (z))
#else
typedef struct {
double re;
double im;
} complex;
などごっそり書いてあった部分が、
/* setjmp(cjmpenv)の返却値 */
# 24 "complex.h"
typedef struct {
double re;
double im;
} complex;
# 77 "complex.h"
/* xの実数部にsを加える */
# 89 "complex.h"
/* xの虚数部にsを加える */
と、# 24 "complex.h"や# 77 "complex.h"などに置き換えられているようです。
この#24や#77はどういう意味なのでしょうか?
http://homepage2.nifty.com/m_kamada/fractalp.htm#mandelbmp_c
のサイトにある、complex.hを読んでいるんですが、
gccでマクロを展開してここのソースを読むと、
/* setjmp(cjmpenv)の返却値 */
#define C_DIVIDE_BY_ZERO 1 /* 0で除算しようとした */
#define C_ARG_ZERO 2 /* 0の角度を求めようとした */
略
#endif
#if __GNUC__==2
#define complex __complex__
#define Re(z) (__real__ (z))
#define Im(z) (__imag__ (z))
#else
typedef struct {
double re;
double im;
} complex;
などごっそり書いてあった部分が、
/* setjmp(cjmpenv)の返却値 */
# 24 "complex.h"
typedef struct {
double re;
double im;
} complex;
# 77 "complex.h"
/* xの実数部にsを加える */
# 89 "complex.h"
/* xの虚数部にsを加える */
と、# 24 "complex.h"や# 77 "complex.h"などに置き換えられているようです。
この#24や#77はどういう意味なのでしょうか?
それと、
「複素数値を持つ式 exp から実数部を抽出するには、
__real__ exp と書きます。同様に、虚数部を抽出するには __imag__ を使います。これはGCCの拡張である。」
とあり、printf("b=%d + %d I¥n", __real__ exp, __imag__ exp); で複素数表示出るのですが、
コレは__real__ という関数名なのでしょうか?
でも関数だと( )が必要だし....
そもそも__みたいな変な名前のマクロをどういう意図で作ったのでしょうか?
complex.hを見ても良くわかりませんでした。
__のような物がつくプログラムを見たのが初めてで、非常に理解に苦しんでいます。
「複素数値を持つ式 exp から実数部を抽出するには、
__real__ exp と書きます。同様に、虚数部を抽出するには __imag__ を使います。これはGCCの拡張である。」
とあり、printf("b=%d + %d I¥n", __real__ exp, __imag__ exp); で複素数表示出るのですが、
コレは__real__ という関数名なのでしょうか?
でも関数だと( )が必要だし....
そもそも__みたいな変な名前のマクロをどういう意図で作ったのでしょうか?
complex.hを見ても良くわかりませんでした。
__のような物がつくプログラムを見たのが初めてで、非常に理解に苦しんでいます。
>>172,173,174
お返事有り難うございます。
>普通の名前と喧嘩しないように __ を付けるのは慣例
>慣例じゃなくて予約されているんだが
確かに__って普通の変数には付けないですからね。
どうも有り難うございました。
お返事有り難うございます。
>普通の名前と喧嘩しないように __ を付けるのは慣例
>慣例じゃなくて予約されているんだが
確かに__って普通の変数には付けないですからね。
どうも有り難うございました。
gdb+gccなんですがクロスコンパイルしてます。
Aでコンパイル
Bで実行。
Bで、はいたコアダンプを冢ってgdbを使いたい場合は
Aでmakefile(自動生成)使ってまっす。
どうしたら、ディレクトリ構造とか再現してソース追っかけながらデバッグできますか?
makefileに答え有りますか?
Aでコンパイル
Bで実行。
Bで、はいたコアダンプを冢ってgdbを使いたい場合は
Aでmakefile(自動生成)使ってまっす。
どうしたら、ディレクトリ構造とか再現してソース追っかけながらデバッグできますか?
makefileに答え有りますか?
>>178
Bでgdbserver走らせるのが一番楽じゃない?
Bでgdbserver走らせるのが一番楽じゃない?
>>180
おとなの事情というか会社の事情で無理なんです
おとなの事情というか会社の事情で無理なんです
少し確認ですが
Aにもgdbserverがデーモンのように動く必要ありますか?
Bにも同じgdbserverが必要ですよね?
Aで負荷高くなりそうですね
Aにもgdbserverがデーモンのように動く必要ありますか?
Bにも同じgdbserverが必要ですよね?
Aで負荷高くなりそうですね
>>180
あ、ごめん、コアの話しか。 そういう機能はgdbserverにはないね。
あ、ごめん、コアの話しか。 そういう機能はgdbserverにはないね。
だめだ。
__real__って何なんだ?
関数ではないしcomplex.hにも定義されていない。
gcc機能拡張ってのがよくまずわからない。
特殊な演算子なんですか?
__real__って何なんだ?
関数ではないしcomplex.hにも定義されていない。
gcc機能拡張ってのがよくまずわからない。
特殊な演算子なんですか?
>>184
わからないなら自前の構造体定義すれば?
わからないなら自前の構造体定義すれば?
>>184
何をわかる必要があるというんだろう。sizeof だってどこかのヘッダで
定義してあるわけじゃないけど使えるでしょ?
infoの説明はこれだけしかないけど、これで十分つかえるじゃないか。
> To extract the real part of a complex-valued expression EXP, write
> `__real__ EXP'. Likewise, use `__imag__' to extract the imaginary
> part.
何をわかる必要があるというんだろう。sizeof だってどこかのヘッダで
定義してあるわけじゃないけど使えるでしょ?
infoの説明はこれだけしかないけど、これで十分つかえるじゃないか。
> To extract the real part of a complex-valued expression EXP, write
> `__real__ EXP'. Likewise, use `__imag__' to extract the imaginary
> part.
http://gcc.gnu.org/ml/gcc/2008-01/msg00387.html
GCC 4.3 もリリースモードへ突入
GCC 4.3 もリリースモードへ突入
printfってプログラム埋め込み?
debuggerのbreakpointsでprintfするんじゃなくて?
埋め込みなんてここ5年くらいやったことないわ。
debuggerのbreakpointsでprintfするんじゃなくて?
埋め込みなんてここ5年くらいやったことないわ。
違った。
つか「デバッグトレース」って、デバッグ目的のトレース実行とか、
呼び出し順の出力のことじゃね?
つか「デバッグトレース」って、デバッグ目的のトレース実行とか、
呼び出し順の出力のことじゃね?
類似してるかもしれないスレッド
- GCCについて part9 (1001) - [95%] - 2011/9/2 21:17 ○
- GCCについて part10 (538) - [90%] - 2018/7/5 20:30
- Cygwin + MinGW + GCC 相談室 Part 8 (938) - [18446744073709551610%] - 2022/10/28 8:00
トップメニューへ / →のくす牧場書庫について