タグ

Cに関するKatagiriSoのブックマーク (27)

  • [C言語] 共有ライブラリと静的ライブラリを整理する - Qiita

    なんとなく分かった気でいるふたつのライブラリ。 それを小さなテストコードを使いながら整理してみます。 (ちなみに今回紹介するのはMacでのものです。Linuxではフォーマット、コンパイル方法などが異なります) 静的ライブラリをコンパイルする まずは静的ライブラリです。 ちなみにMacではMach-Oというフォーマットを使います。 (Linuxでは「ELF(Executable and Linking Format)」というらしい) こちらの記事が分かりやすかったです。 また、静的ライブラリはオブジェクトファイルをまとめたただのアーカイブです。 (なのでar(アーカイブ)コマンドを使う) 例として以下のように静的ライブラリの中身を定義しました。

    [C言語] 共有ライブラリと静的ライブラリを整理する - Qiita
    KatagiriSo
    KatagiriSo 2018/09/03
  • C言語のグローバル変数のスコープについてグローバル変数というのは関数外の宣言された変数で有効範囲は「そのファイル内のみ」ですよ... - Yahoo!知恵袋

    C言語のグローバル変数のスコープについて グローバル変数というのは関数外の宣言された変数で 有効範囲は「そのファイル内のみ」ですよね? C言語のグローバル変数のスコープについて グローバル変数というのは関数外の宣言された変数で 有効範囲は「そのファイル内のみ」ですよね? そのファイル内であれば、どの関数からも呼び出すことができる。 と私は思っていたのですが、どうなのでしょうか? グローバル変数や関数に「static」を付けることで 「そのファイル内のみ」扱うことができるという意味になりますよね? これってグローバル変数の方は「static」をつけてもつけなくても 同じように思えるのですが・・・ また、グローバル変数を宣言されたファイル以外でも グローバル変数を共有させたい時は「extern」を使う。 使い方は「extern int a」のようにして、 どこかで実体「int a」というように

    C言語のグローバル変数のスコープについてグローバル変数というのは関数外の宣言された変数で有効範囲は「そのファイル内のみ」ですよ... - Yahoo!知恵袋
    KatagiriSo
    KatagiriSo 2016/05/04
  • ビット演算 - Wikipedia

    ビット演算(ビットえんざん、英: bitwise operation)とは、主にコンピュータで行われる演算のひとつで、データをビット列(つまり0か1が多数並んだもの)と見なして、各ビットの移動やビット単位での論理演算を行うもの[1]。 概要[編集] デジタルコンピュータの内部では、情報をビット列として表しており、CPUやMPUなどにはビット演算用の命令が多種用意されている[1]。特に機械語のプログラムでは多用される演算であり、高水準言語のソースコードでは直接記述されていない場合でも結局機械語に変換されて実行されるので、内部的に多用されている[1]。 ビット演算は大きく分けて次のように二種類ある[1]。 ビット単位の論理演算[1] NOT, AND, OR, XORがある。 ビットの位置を入れ替える操作[1] 大きく分けるとシフト演算(一方向に単純に移動させる操作)とローテート演算(ビット列

    KatagiriSo
    KatagiriSo 2016/04/15
  • C と C++の間で関数や変数を共有する - akihiko’s tech note

    C++ で実装した関数を C から利用したい場合,あるいはその逆の場合がある.同じソースの中に両方のプログラムコードを書くことはできないが,それぞれのソースをコンパイルしてオブジェクトファイルを生成し,それらをリンクすることは可能だ.ただし C++ 特有の名前空間 (namespace) や関数オーバーロードに対処する必要がある. 以下ではコンパイラに gcc-4.3 / g++-4.3 を利用している.環境は debian/linux. introduction... 簡単なプログラムの場合は,図(a)のようにひとつのソースコードをコンパイルして実行ファイル (*.out / *.exe) を生成している.しかし,プログラムの規模が大きくなった場合,ライブラリを作る場合,何人かで共同開発する場合などでは,図(b)のようにソースを小分けして個別にコンパイルしてオブジェクトファイル (*.o

    C と C++の間で関数や変数を共有する - akihiko’s tech note
    KatagiriSo
    KatagiriSo 2015/12/11
  • Using and Porting the GNU Compiler Collection (GCC) - C 言語ファミリに対する拡張機能

    GNU Cは、 ANSIの標準Cにはない特徴的な言語機能をいくつか提供しています (`-pedantic'オプションは、 これらの機能が使われた場合に 警告メッセージを出力するようGNU CCに対して指示するものです)。 条件コンパイルにおいて、 これらの機能が利用可能であるかどうかをテストするためには、 __GNUC__というマクロが事前に定義されているかどうかをチェックします。 この__GNUC__というマクロは、 GNU CCでは常に定義されています。 これらの拡張機能はCとObjective Cで利用可能です。 また、 そのほとんどはC++でも利用可能です。 C++にのみ適用可能な拡張機能については、 C++言語に対する拡張機能を参照してください。 式の中の文と宣言 GNU Cにおいては、 丸括弧()で囲まれた複文を1つの式とみなすことができます。 これによって、 1つの式の中でル

  • c: c言語をスクリプト感覚で実行出来る様にするコマンド

    B! 92 0 0 0 PythonRubyなんかはShebangをファイルの先頭に書いておくと、 ファイルの実行権限を持っていれば内容をその言語のものとして読み取って実行してくれます。 これと同じような事をしてくれるコマンドが cです。 c Shebangを使って実行 コマンドとしてファイルを引数として渡して実行 その他出来るコト c cはファイルの中身を見ると結構単純なシェルスクリプトです。 中でccを使ってコンパイルして実行する、を一気にやってくれるわけです。 その際、実際の実行ファイルなんかは 一時ディレクトリ($C_CACHE_PATH or $TMPDIR or /tmp) に作られるのでまるでスクリプトを実行してる様な感じで コマンドが実行されます。 使うには上のレポジトリからcスクリプトを取ってきて適当なPATHの通った ディレクトリにインストールします。 Shebang

    c: c言語をスクリプト感覚で実行出来る様にするコマンド
    KatagiriSo
    KatagiriSo 2015/03/19
    練習に良いのかも
  • 問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ

    問.Cでオブジェクト指向プログラミングを行なえ。ただし「オブジェクト指向プログラミング」とは、次のような特徴を持つプログラミング技法であるものとする: オブジェクトの実装はオブジェクトのユーザーからは隠蔽される(カプセル化/隠蔽) 同一型のオブジェクトと同一メソッドを与えた時、実際のメソッドの動作はオブジェクトの内容により変化する(ポリモーフィズム/多態性) なお、ユーザーが既存のオブジェクトをカスタマイズして新たなオブジェクトを作成する機能は、必要ないものとする。 この問いの狙い よく、「オブジェクト指向プログラミング」と「オブジェクト指向言語」は混同されます。が、前者はプログラムを設計する上での考え方で、後者はその考え方を容易にソースコードに書けるような仕様になっている言語の事で、全く違うものを指しています。 その証拠を示すため、「非オブジェクト指向言語」たるC言語で「オブジェクト指向

    問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ
    KatagiriSo
    KatagiriSo 2014/10/20
  • C言語プログラミングの覚え書き(改訳) - アスペ日記

    原文: Notes on Programming in C Rob Pike 1989年2月21日 Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved. Lucent Public License Version 1.02 前書き KernighanとPlaugerによる“The Elements of Programming Style” (「プログラム書法」木村泉訳)は重要で影響力のあるです。このにはそれだけの価値があります。しかし、その中の簡潔なルールが、来意図されたような哲学の簡潔な表現としてではなく、よいスタイルのレシピとして受け取られているように私は時々感じます。このが変数名は意味を持つようにつけられるべきだと言うなら、名前が使い方を説明するちょっとしたエッセイのような

    C言語プログラミングの覚え書き(改訳) - アスペ日記
    KatagiriSo
    KatagiriSo 2014/10/12
  • C言語におけるプリプロセッサのディレクティブ、マクロ一覧と使い方

    #define #define ディレクティブはマクロの定義を行う。C言語では数値や文字列、数式にに名前を付けて定数を定義することができます。 #define identifier #define identifier replacement #define identifier (parameter) replacement identifier マクロの識別子を指定する。識別子は大文字と小文字を区別する。マクロの識別子は慣習的に大文字で付けることが多い。 #include <stdio.h> #define DEBUG int main(int argc, char **argv) { int i = 1; #ifdef DEBUG printf("i = %d\n", i); #endif } 上記プログラムの実行結果を以下に示す。 $ gcc -o example example.

    KatagiriSo
    KatagiriSo 2014/10/09
  • プリプロセッサでプログラムの質を向上させよう

    「#」演算子と「##」演算子 マクロ定義では、「#」演算子と「##」演算子が使えます。 引数を持つマクロ(関数型マクロ)では記述した引数がそのまま評価されますが、仮引数の前に「#」演算子を付けると、実引数がそのまま文字列になります。 // 通常のマクロの例 #define MACRO_A(a) a int x = MACRO_A(1 + 2); // int x = 1 + 2; // #演算子を使ったマクロの例 #define MACRO_B(b) # b char * y = MACRO_B(1 + 2); // char * y = "1 + 2";

    プリプロセッサでプログラムの質を向上させよう
  • 国产在线精品国自产拍影院同性_夜夜高潮天天爽欧美_一本色综合久久_姓交视频

    菠萝菠萝蜜在线视频免费视频_把腿张开臊烂你视频_久久免费看黄_给熟女做私密spa喷水_久久久久人一区精品手机版_国产Av白丝_国产精品igao视频网

    KatagiriSo
    KatagiriSo 2014/10/07
  • CERT C コーディングスタンダード 00. はじめに

    CERT セキュアコーディングスタンダードの概要 ネットワーク化されたソフトウェアシステムへの依存度が高まるにつれ、そのようなシステムを狙った攻撃の数は増えてきている。政府、企業、教育機関、個人を狙ったこれらの攻撃は、機密データの消失や漏えい、システムの損傷、生産性の低下、および金銭的な損失につながっている。 ソフトウェアの脆弱性に関する報告は驚くべき速さで増え続けており、そのうちの大部分はテクニカルアラート(注意喚起)の発行につながっている。この増大する脅威に対処するためには、ソフトウェアの開発や継続的なメンテナンスの過程で作りこまれるソフトウェアの脆弱性を大幅に削減する必要がある。 安全なソフトウェア開発に不可欠な要素は、適切に明文化された、適用可能なコーディングスタンダードである。コーディングスタンダードがあれば、プログラマは個人の得意な方法や好みではなく、プロジェクトと組織の要件に

    CERT C コーディングスタンダード 00. はじめに
    KatagiriSo
    KatagiriSo 2014/10/03
  • http://www.nxmnpg.com/ja/3/LIST_INSERT_BEFORE

    KatagiriSo
    KatagiriSo 2014/08/12
    LIST
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    KatagiriSo
    KatagiriSo 2014/08/12
  • プログラミング言語 C の新機能

    プログラミング言語 C は 1990 年に ISO で規格化された言語です。その後、何度かの誤りの訂正や wchar_t 型の追加といった追補がなされた後、さらに使いやすくするための新しい機能が検討されてきました。そして、1999 年、ついに新しいプログラミング言語 C の仕様「ISO/IEC 9899:1999 - Programming Language C」(略称 C99) が 1999/12/01 付けで規格として出版されました。ここでは、その新機能を説明します。

    KatagiriSo
    KatagiriSo 2014/05/23
  • 変数の型

    型ごとに割り当てられるサイズが異なり、サイズに応じて型に格納可能な値の範囲が設定されます。例えば char 型の場合は 1 バイトですので char 型の変数には -128 ~ 128 の値しか格納できません。それに対して int 型の場合は 4 バイトですので int 型の変数には -2147483648 ~ 2147483647 の値が格納できます。 char 型は整数型の 1 バイトの型ですが、アルファベット 1 文字を格納するのに適した型のため文字型と呼ばれています。また short int 型は short 、 long int 型は long と記述しても構いません。 なお、型に対してどれだけのサイズを割り当て、結果としてどれだけの値を格納できるのかについては厳密に規定はされておらずコンパイラなど開発環境によって異なる場合があります。上記はあくまで目安とお考え下さい。 unsi

    変数の型
    KatagiriSo
    KatagiriSo 2014/05/05
  • 28. main 関数の引数

    これまで関数の引数については学んだが、main()関数については 常に引数はなかった。しかし、通常 Unix などで用いるコマンドの多くは C言語で書かれており、それらにはオプションと呼ばれるものを指定する 事が可能である。例えば、ファイルをコピーするのに用いられる cp コマンド は通常二つのコマンドライン引数を与え、 のように使う。これによって、test1 のファイルの中身が test2 に コピーされる。つまり、C言語ではこうしたコマンドラインオプション を扱う事が出来る訳である。 コマンドラインに与えられた文字列は、空白を区切りとして複数の 文字列に分けられ、それぞれの文字列へのポインタが main()関数 に与えられるようになっている。当然、それらの文字列がいくつあるか が分からないと困るので、main()関数に与えられる引数は2つの 要素からなる。一つは、コマンドラインオプショ

    KatagiriSo
    KatagiriSo 2014/04/15
  • 標準入出力

    第5章 標準入出力関数(1) 標準入力(キーボードからの入力)、標準出力(画面への出力)を行う標準ライブラリ関数のうち、特に使用頻度の高い、printf() と scanf() について説明します。 尚、その他の標準入出力関数については 第8章 をご参照下さい。 標準入出力関数を使用するには、#include <stdio.h> が必要です。 「#include」については「18-2.#include」を参照してください。 5-1.printf() 画面に書式付きで出力します。 printf() の f は "format"(書式) の f です。printf()は書式指定を行うことにより、同じ「65」という数値でも、10進数で出力したり、文字で出力したりというように出力形式を変えることが出来ます。 (書き方)

    KatagiriSo
    KatagiriSo 2014/04/15
  • The LLVM Compiler Infrastructure Project

    Useful Links Forums LLVM Discourse Mailing Lists: Commits List Discord (Real-time Chat): Discord IRC Channel: irc.oftc.net #llvm Calendar: LLVM Community Calendar Dev. Resources: doxygen Sources (GitHub) Code Review Blog Bug tracker Buildbot Green Dragon LNT Scan-build llvm-cov Compile-time tracker Release Emails 18.1.1: Mar 2024 18.1.0: Mar 2024 17.0.6: Nov 2023 17.0.5: Nov 2023 17.0.4: Oct 2023

  • C11の仕様-それ以外の主な機能強化点

    「無名」という言葉は、構造体/unionの識別子(いわゆるタグ名)が省略されていること(リスト1の(1))、メンバー名が省略されていること(リスト1の(2))の両方を指している。メモリ上での配置は通常の構造体/unionと変わらない。つまり、リスト1のintegerメンバーとfloatingメンバーは同一のアドレスに配置される。無名union/構造体内のメンバーへは、その無名union/構造体をメンバーとして持つunion/構造体のメンバーと同じようにアクセスできる。(3)を見ると分かるとおり、dataTypeメンバーと同じようにして、integerメンバーにアクセスできていることが分かる。 総称選択(§6.5.1.1) 総称選択(Generic selection)は、型に応じて分岐する式である(リスト2)。

    KatagiriSo
    KatagiriSo 2014/04/09