タグ

C++と雑学に関するiwwのブックマーク (2)

  • __null ‐ 通信用語の基礎知識

    わざわざ独自定義する以上は、__nullはポインター長の独自の型として振る舞い、int型への代入でエラーになることが期待されるところである。しかし、そのように動くかどうかは、環境による。 32ビット環境では、現実には(int)0と同じ扱いである。 次のコードはエラーにならない。 int i = __null; そして、typeid(__null).name()で__nullの型を調べると、「int」と出力される。32ビット環境では、__nullはint型なのである。 __nullが存在するのは、64ビット環境への対応のためである。64ビット環境では、NULLと0は同一とは限らない。 #include <iostream> int main() { std::cout << "sizeof(NULL) : " << sizeof(NULL) << std::endl; std::cout <

  • KMC Staff Blog:C++ ではキャストでアドレスが変わる場合があります

    2009年07月24日 C++ ではキャストでアドレスが変わる場合があります このごろは組み込みソフトウェア開発でも C++ が使われるようになってきました。C から C++ に移行する際、おそらく誰もが一度は引っかかるのではないかという C++ の挙動について書きます。 C++ では、多重継承した class(struct) のアドレスを扱う際には注意する必要があります。 #include <stdio.h> struct A { int a; }; struct B { int b; }; struct C : public A, public B { }; int main() { C *c = new C(); B *b = c; A *a = c; printf("C = %p\n", static_cast<void*>(c)); printf("B = %p\n", stat

  • 1