タグ

c++に関するincepのブックマーク (32)

  • Undefined, unspecified and implementation-defined behavior

    incep
    incep 2021/02/06
    " can hear people screaming 'xxxxxx' or 'yyyyyyy'. This is exactly the problem with undefined behavior. "
  • Use C++ with Cocoa Instead of Objective-C?

    You cannot write a Cocoa application entirely in C++. Cocoa relies heavily on the late binding capabilities of Objective-C for many of its core technologies such as Key-Value Bindings, delegates (Cocoa style), and the target-action pattern. The late binding requirements make it very difficult to implement the Cocoa API in a compile-time bound, typed language like C++ⁱ. You can, of course, write a

    Use C++ with Cocoa Instead of Objective-C?
    incep
    incep 2020/07/31
  • Cling

    What is Cling Cling is an interactive C++ interpreter, built on the top of LLVM and Clang libraries. Its advantages over the standard interpreters are that it has command line prompt and uses just-in-time (JIT) compiler for compilation. Many of the developers (e.g. Mono in their project called CSharpRepl) of such kind of software applications name them interactive compilers. One of Cling’s main go

    Cling
  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

    incep
    incep 2020/01/17
  • インクルードガードとpragma once - にゃははー

    C++ Advent Calendar 2015の5日目です。 前C++時代から近代C++に至るまで、ヘッダファイルの重複インクルード排除のために通称インクルードガードというものが使われてきました。 #ifndef YOUR_VERY_VERY_AWESOME_LIBRARY_HEADER_H #define YOUR_VERY_VERY_AWESOME_LlBRARY_HEADER_H #endif // YOUR_VERY_VERY_AWESOME_LIBRARY_HEADER_H しかしこれはファイルの前後に書かないといけないという制約や、他のヘッダとトークン列が一致してしまうと意図せずヘッダがインクルードされないという問題がありました。 これに対してたった1行で書いて終わりの#pragma onceは、標準化を求める声も多く、目的が明確で、実装もあるにも関わらず、標準に入る気配すら

    インクルードガードとpragma once - にゃははー
  • extern "C"の意味

    extern "C"の意味について調べてみました。 1.はじめに CプログラムからC++の関数を起動することを確認するため、下記のサンプルを作りました。 foo.h class Foo { private: int number; public: Foo(int num); int print(void); }; void construct(); void foo_print(); void destruct(); foo.cpp #include "foo.h" #include <iostream> Foo::Foo(int num) { number = num; } int Foo::print(void) { std::cout << number << '\n'; } Foo *foo; void construct() { foo = new Foo(100) ; } vo

    extern "C"の意味
    incep
    incep 2019/10/27
    extern "C"とそれを指定しない場合のC++コンパイル時にシンボル名を変えているmanglingについて.CプログラムからC++の関数を呼出するときに大事
  • C/C++ 危険な書き方について

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

    C/C++ 危険な書き方について
    incep
    incep 2019/05/14
    "安心安全なCなんて無いのです。" "C++はどうでしょう。C++はCのスーパーセットです。Cとほぼ同じ事ができます。つまり、C++はCと同じぐらい危険なことをできてしまうと言うことです。"
  • 引数をとらない関数の仮引数にvoidを書くべきか、書かざるべきか? - 新・日々録 by TRASH BOX@Eel

    エントリ名のような質問にたいする回答をよく忘れてしまうので、ここにメモしておく。 仮引数にvoidを書く/書かないについては、C言語とC++で言語仕様での扱いが異なる。C言語の場合は、関数の宣言か定義かによっても差異がある。 この違いを表にするとこんな感じ。 言語 宣言/定義 f(void) f() C言語 関数宣言 引数なし(ANSI Cのプロトタイプ宣言) 任意の個数の引数(K&Rの頃の伝統的な宣言) C言語 関数定義 引数なし(ANSI Cの関数定義) 引数なし(K&Rの頃の伝統的な関数定義) C++ 関数宣言 引数なし(プロトタイプ宣言) 引数なし(プロトタイプ宣言) C++ 関数定義 引数なし(関数定義) 引数なし(関数定義) C言語のみを使う場合 ANSI Cでコードを書いているならば、引数をとらない関数の仮引数にvoidを書くべきだ。 関数の宣言・定義ともに、仮引数にvoi

    引数をとらない関数の仮引数にvoidを書くべきか、書かざるべきか? - 新・日々録 by TRASH BOX@Eel
  • using namespace std; の危険性と注意点・代替案【なぜ使わないほうがいいのか】

    using namespace std C++では名前空間の面倒な修飾を省略するためにmain関数の外でusing namespace std;という記述をすることがあります。これによって、std::coutという記述をcoutというstd::を省略した形で簡潔に記述できるようになります。 #include <iostream> using namespace std; // usingディレクティブ int main() { cout << string("便利") << endl; } usingディレクティブ、とりわけusing namespace stdの利用は、サンプルプログラムでの活用や、その場限りの簡単なプログラムを書く分にはそれほど問題にはなりませんが、大規模なコードや継続的な保守・拡張を前提としたコードを書く際には、面倒な問題や複雑な挙動に直面する危険性があるため、できる

  • GitHub - microsoft/cppwinrt: C++/WinRT

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - microsoft/cppwinrt: C++/WinRT
    incep
    incep 2018/12/13
    Microsoftのメイン言語がC++に回帰したのを最近初めて知った
  • MALLOC

    時事ネタ いや、「今、fj.comp.lang.cが熱い!」という話は ちょっと前から聞き及んではいたのですが、 流量が尋常じゃないらしいので、 忙しさもあって読むのを控えていたんですけど、 先日、大筋を拾い読みしてみました。 確かに熱いですねえ。 いったん収束するかなあ、と思ったら、なんかまた泥沼の気配が(^^; fjを読んでない人のために説明すると(って、 私も普段はあんまり読んでないんですが)、 「malloc()で確保した領域は、必ずfree()で解放しなきゃいけないか?」という 話題でして、「exit()する時には、OSが解放してくれるんだから 別にfree()しなくてもいいじゃん」という主張と、 「いや、malloc()には常に対になるfree()があるべきだ」という主張があって、 議論を呼んでいたのでした。 んで、私がどう思うかなんですが、 私は面倒臭がりなので、free()

  • 本の虫: CとC++の違い: 宣言編

    京都C++勉強会の宣伝のために、CとC++の違いを、少しづつ解説することにした。 江添とボレロ村上の京都C++勉強会が、12月16日に行われる。これを書いている時点では、まだ空きがあるので、最新のC++14の新機能と、コンパイル時レイトレーシングを勉強したければ、ATNDで参加申し込みをせよ。 江添とボレロ村上の京都C++勉強会 | 集客ならイベントアテンド 今日は、宣言の違いを解説する。 C++では、staticやexternキーワードは、オブジェクトの宣言にのみ使用できる。型の宣言に指定することはできない。Cでは、型の宣言に指定することもできた。その場合、単に無視される。 // Cでは無視される // C++ではエラー static struct S { int i ; } ; C言語では、合法ではあるが、単に無視されていた文法を、禁止しただけだ。このようなコードはまず書かれていないだ

    incep
    incep 2018/10/12
    “C++では、同一のスコープ内で、typedef名とクラス名を重複して宣言することができない(ただし、同名のクラスへのtypedef名を除く)。Cでは、構造体名と異なるエンティティで同名のtypedef名を宣言できる ”
  • Preventing console window from closing on Visual Studio C/C++ Console application

    This is a probably an embarasing question as no doubt the answer is blindingly obvious. I've used Visual Studio for years, but this is the first time I've done any 'Console Application' development. When I run my application the console window pops up, the program output appears and then the window closes as the application exits. Is there a way to either keep it open until I have checked the outp

    Preventing console window from closing on Visual Studio C/C++ Console application
  • 微分積分

    静岡理工科大学情報学部コンピュータシステム学科菅沼研究室のページです.主として,プログラミング言語( HTML,C/C++, Java, JavaScript, PHP, HTML,VB,C# ),及び,システムエンジニアとしての基礎知識(数学,オペレーションズ・リサーチやシステム工学関連の手法)を扱っています.

    incep
    incep 2018/05/23
  • GitHub - yossi-tahara/Theolizer: auto serializer for C++11, Do you want to update your classes easily ?

  • 実践C++入門講座11回目 広大なメモリを使うために(ヒープ) | Theolizer®

    こんにちは。田原です。 前回までに説明したプログラム用メモリ、静的変数用メモリ、スタック用メモリは、基的にコンパイル時にサイズが決まります。もし、これらの領域しか使わない場合、巨大なメモリを搭載しているコンピュータでプログラムを走らせても、その巨大なメモリを有効活用できません。それは悲しいですよね。 その巨大なメモリをうまく使うための仕組みが「ヒープ用メモリ」です。今回は、このヒープとその使い方について解説します。 第4回目 コンピュータの仕組みについてで、メモリとそのアドレス、そしてポインタについて少し説明しました。これらはたいへん重要ですので、軽く復習します。 int a; int* b=&a; 上記のようにint型の変数aがあったとします。その変数aはどこかのメモリ上に割り当てられますので、アドレスが割り振られています。その先頭アドレスを取り出す演算子が & でした。つまり、 &a

    実践C++入門講座11回目 広大なメモリを使うために(ヒープ) | Theolizer®
    incep
    incep 2018/05/23
    “クラス”
  • C++でアスタリスクをつけすぎると端末が落ちる - Qiita

    ならint *型へのポインタになります。 これ、int *****pといくらでも付けられるわけですが、いったいいくつまでつけられるんでしょうか。これってトリビアになりませんかね。 実際に調べてみた。 スクリプト こんな適当なスクリプトを書く。 n = 100 if ARGV.size > 0 n = ARGV[0].to_i end puts "#include <cstdio>" puts "int main(void){" puts "int #{"*"*n}a;" n.times do |i| puts "#{"*"*i}a = new (int#{"*"*(n-i-1)});" end puts <<EOS printf("%x\\n",a); } EOS

    C++でアスタリスクをつけすぎると端末が落ちる - Qiita
    incep
    incep 2018/04/05
    "...端末が「予期しない理由」で落ちだしたのでそれ以上はやってませんが、メモリに余裕があるアスタリスク好きな人は1万個でも100万個でも好きなだけつければいいんじゃないでしょうか。"
  • Why don't we rewrite the Linux kernel in C++? | Hacker News

    incep
    incep 2018/03/22
    C++に移行せず、goto文を使い続ける理由: "switching to if-then-else blocks might be good Computer Science theory, but using goto's is good Engineering."
  • [Visual Studio] ウォッチをより便利に使う10の書式

    Visual Studio のウォッチ式で使える便利な書式を紹介したいと思います。 (※ Visual Studio 2013 を対象としています。古いバージョンでは使えないものもあります。) 説明用サンプルコード class B { int a, b, c; virtual void f() {} }; class D : public B { int x, y, z; }; int main() { D d; B* b = &d; ::std::vector<int> v{ 0, 1, 2 }; int a[1024]; for( int i=0; i < _countof(a); ++i ) a[i] = i; void* p = a; unsigned char* p8 = reinterpret_cast<unsigned char*>(a); char str[] = "Hel

    [Visual Studio] ウォッチをより便利に使う10の書式
    incep
    incep 2018/02/24
  • ポインタ虎の巻~ポインタの型

    ここでは、変数には、整数型int,文字型char,浮動小数点型doubleなどの型があることに注意してポインタを見て行こう。 これらの変数の型は、その変数の値が必要とするメモリのサイズの情報を持っている。一般的なUNIXでは、int = 4byte, char=1byte, double=8byte が普通であり、変数の型に合わせてその変数がメモリ上で占めるべきサイズが確保されている。サイズを知るためには printf("size of int=%d\n", sizeof(int)); printf("size of char=%d\n", sizeof(char)); printf("size of double=%d\n", sizeof(double)); printf("size of pointer to char=%d\n", sizeof(char *)); printf("