タグ

GCCとおもしろに関するAmaiSaetaのブックマーク (2)

  • C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium

    発端はuchan_nos氏によるこのツイートでした。 C言語で、当にメモリの0番地にデータを書きたいときはどうすりゃええの?— うー@技術書典8 Day1う31 BitNOS (@uchan_nos) 2020年2月12日 それに対する私のリプライ: uint8_t *p = 1; p--; *p = v;— hikalium (@hikalium) 2020年2月12日 私はこれで話が終わると思っていたのだが、どうやらそうではなかったらしく、色々な視点からの意見が加わりながら、話は混沌を極めたのでした…。 ということで、ここに私のこのツイートに対しての見解とか、わかったことをまとめておこうと思います。 私のリプライの背景について uchanさんが求める「0番地にデータを書きたい」という課題設定を、私はこのように解釈しました。 C言語において、整数0をポインタに変換すると、それはNULL

    C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium
    AmaiSaeta
    AmaiSaeta 2020/02/16
    本題からはズレるけど、 "整数からポインタへの変換は処理系定義である" ってマジか。稀に、相互変換が出来る事が前提の処理が在るよね (Win32 API で見た記憶が)。
  • Weffc++、Qeffc++

    説明 このオプションは、Scott Meyers 著『Effective C++』のプログラミング・ガイドラインに基づく警告を有効にします。このオプションを指定すると、コンパイラーは次のガイドラインに基づいて警告を出力します。 #define ではなく、const と inline を使用する。(ユーザーコードのみ。システム・ヘッダー・コードには適用されません。) <stdio.h> ではなく、<iostream> を使用する。 malloc と free ではなく、new と delete を使用する。 C 形式ではなく、C++ 形式のコメントを使用する。システムヘッダーにある C コメントは診断されません。 デストラクターでポインターメンバーに対して delete を使用する。コンパイラーは、delete を使用していないすべてのポインターを診断します。 ポイ

    AmaiSaeta
    AmaiSaeta 2009/06/12
    『Effective C++』『More Effective C++』に添うコードを書いているかをチェックするオプション、らしい。
  • 1