About: Blocks (C language extension)     Goto   Sponge   NotDistinct   Permalink

An Entity of Type : yago:Software106566077, within Data Space : dbpedia.org associated with source document(s)
QRcode icon
http://dbpedia.org/describe/?url=http%3A%2F%2Fdbpedia.org%2Fresource%2FBlocks_%28C_language_extension%29

Blocks are a non-standard extension added by Apple Inc. to Clang's implementations of the C, C++, and Objective-C programming languages that uses a lambda expression-like syntax to create closures within these languages. Blocks are supported for programs developed for Mac OS X 10.6+ and iOS 4.0+, although third-party runtimes allow use on Mac OS X 10.5 and iOS 2.2+ and non-Apple systems. Given a block value, the code within the block can be executed at any later time by calling it, using the same syntax that would be used for calling a function.

AttributesValues
rdf:type
rdfs:label
  • Blocks (C language extension) (en)
  • ブロック (C言語拡張) (ja)
  • 블록 (C 언어 확장) (ko)
  • Блоки (расширение языка Си) (ru)
  • 块 (C语言扩展) (zh)
rdfs:comment
  • 块(blocks)是由LLVM提出的类似于lambda表达式的非标准C语言扩展,亦可以应用于Objective-C与C++中。它的语法类似于这些函数中的闭包,即由大括号包括的语句块。 苹果设计块的一个目的是使设计基于线程结构的程序更容易,但块是独立于这一构架的,它也可以在其它程序中以与普通语句块十分相似的方式应用。苹果已经在苹果修改版的GCC编译器以及Clang LLVM编译器前端中实现了这一特性;同时,LLVM计划,包括了支持块特性的运行时库。 与函数定义类似,块可以有参数,也可以在其内部声明私有变量。与普通的C函数定义不同,块可以使用其上文中定义的变量。一个块定义会产生一个不透明的值,该值同时包括了块内代码的引用和定义时栈内局部变量的快照(而非调用时)。块可以在定义后被调用,其行为与函数指针相同。块可以如同函数指针一般被赋值到变量中,作为函数的参数传递,但若块需要在其被定义的范围之外被使用时,程序员(或API)需要将该块用特别的运算符(Block_copy)标记。 在定义块之后,块内的代码可以在任何时间被调用,语法与调用函数相同。 (zh)
  • Blocks are a non-standard extension added by Apple Inc. to Clang's implementations of the C, C++, and Objective-C programming languages that uses a lambda expression-like syntax to create closures within these languages. Blocks are supported for programs developed for Mac OS X 10.6+ and iOS 4.0+, although third-party runtimes allow use on Mac OS X 10.5 and iOS 2.2+ and non-Apple systems. Given a block value, the code within the block can be executed at any later time by calling it, using the same syntax that would be used for calling a function. (en)
  • 블록은 Clang C/C++, Objective-C 컴파일러에서 지원하는 람다 표현식과 유사한 형태의 언어 확장이다. 공식적으로는 Mac OS X 10.6 및 iOS 4.0 이후 버전에서만 지원되지만, 서드 파티의 지원으로 하위 일부 버전(Mac OS X 10.5, iOS 2.2 이상)이나 비 Apple 시스템에서도 사용할 수 있다. 블록은 당초 Apple 사에 의해 자사의 Grand Central Dispatch 아키텍처를 기반으로 한 프로그램 개발을 용이하게 하려는 목적으로 디자인되었지만, 해당 아키텍처가 아닌 컴퓨터에서도 여타 언어의 클로저와 비슷한 방식으로 활용될 수 있다. 블록은 Apple에 의해 자사 전용 GNU 컴파일러 모음 브랜치와 Clang LLVM 업스트림에 구현된 상태이며, 런타임 라이브러리 역시 LLVM 프로젝트의 일환으로 배포되고 있다. 한편, 블록의 문법은 Khronos 그룹에 의해 커널 안에 또다른 커널을 네스팅시키는 용도로 OpenCL 2.0 버전부터 사용되고 있기도 하다. 블록 호출은 함수 호출과 구문상으로 동일하다. (ko)
  • ブロック (Blocks) はAppleによるC言語、Objective-C、C++用の非標準の拡張であり、ラムダ式風の構文を用いてクロージャを作成する機能を提供する。ブロックはMac OS X 10.6以降とiOS 4.0以降向けのプログラムでサポートされるが、サードパーティ製ランタイムでMac OS X 10.5及びiOS 2.2以降でも使用可能である。 ブロックは、スレッディングアーキテクチャーをより容易に記述できるようにするという明確な目的でアップルによって設計された一方で、そのアーキテクチャーから独立して他のプログラミング言語のクロージャに類似した方法で使用することもできる。アップルはブロックをGNUコンパイラコレクションの自社のブランチとClang LLVMコンパイラフロントエンドに実装している。ブロックの言語ランタイムライブラリサポートはLLVMプロジェクトの一部で利用可能である。クロノスグループはブロック構文をOpenCLのバージョン2.0よりエンキューカーネルに使用している。 ブロックは変数に割り当てられたり、関数を越えたり、通常の関数ポインタのように使われるが、ブロックの範囲外で定義されたものを使用する際は特殊な演算子(Block_copy)でマークする必要がある。 (ja)
  • Блоки (англ. blocks) — расширение языков программирования C, C++, Objective-C, не описанное в стандартах этих языков и созданное фирмой Apple. Расширение позволяет создавать замыкания, используя лямбда-подобный синтаксис. «Блоки» были созданы с целью облегчения написания приложений для платформы Grand Central Dispatch, но могут использоваться и на других платформах. Apple реализовала «блоки» в собственной ветке компилятора GCC. Для компиляторов LLVM создана библиотека времени исполнения. «Блоки» похожи на функции: В отличие от функций: (ru)
dcterms:subject
Wikipage page ID
Wikipage revision ID
Link from a Wikipage to another Wikipage
Link from a Wikipage to an external page
sameAs
dbp:wikiPageUsesTemplate
has abstract
  • Blocks are a non-standard extension added by Apple Inc. to Clang's implementations of the C, C++, and Objective-C programming languages that uses a lambda expression-like syntax to create closures within these languages. Blocks are supported for programs developed for Mac OS X 10.6+ and iOS 4.0+, although third-party runtimes allow use on Mac OS X 10.5 and iOS 2.2+ and non-Apple systems. Apple designed blocks with the explicit goal of making it easier to write programs for the Grand Central Dispatch threading architecture, although it is independent of that architecture and can be used in much the same way as closures in other languages. Apple has implemented blocks both in their own branch of the GNU Compiler Collection and in the upstream Clang LLVM compiler front end. Language runtime library support for blocks is also available as part of the LLVM project. The Khronos group uses blocks syntax to enqueue kernels from within kernels as of version 2.0 of OpenCL. Like function definitions, blocks can take arguments, and declare their own variables internally. Unlike ordinary C function definitions, their value can capture state from their surrounding context. A block definition produces an opaque value which contains both a reference to the code within the block and a snapshot of the current state of local stack variables at the time of its definition. The block may be later invoked in the same manner as a function pointer. The block may be assigned to variables, passed to functions, and otherwise treated like a normal function pointer, although the application programmer (or the API) must mark the block with a special operator (Block_copy) if it's to be used outside the scope in which it was defined. Given a block value, the code within the block can be executed at any later time by calling it, using the same syntax that would be used for calling a function. (en)
  • 블록은 Clang C/C++, Objective-C 컴파일러에서 지원하는 람다 표현식과 유사한 형태의 언어 확장이다. 공식적으로는 Mac OS X 10.6 및 iOS 4.0 이후 버전에서만 지원되지만, 서드 파티의 지원으로 하위 일부 버전(Mac OS X 10.5, iOS 2.2 이상)이나 비 Apple 시스템에서도 사용할 수 있다. 블록은 당초 Apple 사에 의해 자사의 Grand Central Dispatch 아키텍처를 기반으로 한 프로그램 개발을 용이하게 하려는 목적으로 디자인되었지만, 해당 아키텍처가 아닌 컴퓨터에서도 여타 언어의 클로저와 비슷한 방식으로 활용될 수 있다. 블록은 Apple에 의해 자사 전용 GNU 컴파일러 모음 브랜치와 Clang LLVM 업스트림에 구현된 상태이며, 런타임 라이브러리 역시 LLVM 프로젝트의 일환으로 배포되고 있다. 한편, 블록의 문법은 Khronos 그룹에 의해 커널 안에 또다른 커널을 네스팅시키는 용도로 OpenCL 2.0 버전부터 사용되고 있기도 하다. 블록은 기본적으로 일반적인 함수와 정의 및 용도 면에서 매우 유사한데, 특수하게도 정의되는 시점의 컨텍스트에서 메모리 상태를 캡쳐해둘 수 있다는 점에서 일반적인 함수와 상이하다. 이를 구현하기 위해 블록은 정의 시점에 함수 콜 스택에 존재하는 지역 변수들의 값을 캡쳐하여 보관해두는데, 이 캡쳐값은 후에 블록이 함수와 비슷한 방식으로 호출될 때에 참조된다. 블록은 변수에 대입되거나 함수 간에 인자로 전달될 수 있는데, 일반적인 C 언어의 함수는 함수 자체가 아니라 함수의 포인터를 이용해 간접적으로 다뤄진다는 점에서 차이가 있다. 단, 블록을 정의된 스코프 바깥에서 사용하기 위해서는 Block_copy라는 특수한 연산자로 표시해주어야 한다. 블록 호출은 함수 호출과 구문상으로 동일하다. (ko)
  • ブロック (Blocks) はAppleによるC言語、Objective-C、C++用の非標準の拡張であり、ラムダ式風の構文を用いてクロージャを作成する機能を提供する。ブロックはMac OS X 10.6以降とiOS 4.0以降向けのプログラムでサポートされるが、サードパーティ製ランタイムでMac OS X 10.5及びiOS 2.2以降でも使用可能である。 ブロックは、スレッディングアーキテクチャーをより容易に記述できるようにするという明確な目的でアップルによって設計された一方で、そのアーキテクチャーから独立して他のプログラミング言語のクロージャに類似した方法で使用することもできる。アップルはブロックをGNUコンパイラコレクションの自社のブランチとClang LLVMコンパイラフロントエンドに実装している。ブロックの言語ランタイムライブラリサポートはLLVMプロジェクトの一部で利用可能である。クロノスグループはブロック構文をOpenCLのバージョン2.0よりエンキューカーネルに使用している。 関数定義のように、ブロックは引数を持ち、内部でローカル変数を宣言することができる。一方で通常の関数定義とは違い、値は周囲のコンテキストから状況をとることもできる。ブロック定義はブロック内のコードへの参照及びその定義時のローカルのスタック変数の現在のスナップショットが含まれる不透明な値を生成する。ブロックは関数ポインタと同様に呼び出すことができる。 ブロックは変数に割り当てられたり、関数を越えたり、通常の関数ポインタのように使われるが、ブロックの範囲外で定義されたものを使用する際は特殊な演算子(Block_copy)でマークする必要がある。 ブロック値を与えると、ブロック内のコードは関数を呼び出す際と同じ構文を使用して、任意の時点で実行することができる。 (ja)
  • Блоки (англ. blocks) — расширение языков программирования C, C++, Objective-C, не описанное в стандартах этих языков и созданное фирмой Apple. Расширение позволяет создавать замыкания, используя лямбда-подобный синтаксис. «Блоки» были созданы с целью облегчения написания приложений для платформы Grand Central Dispatch, но могут использоваться и на других платформах. Apple реализовала «блоки» в собственной ветке компилятора GCC. Для компиляторов LLVM создана библиотека времени исполнения. «Блоки» похожи на функции: * могут принимать аргументы и возвращать значения; * могут иметь локальные переменные; * могут вызываться, как и обычные функции; * имеют адреса, которые могут использоваться как обычные указатели на функцию (то есть, указатели на «блоки» могут храниться в переменных, могут передаваться в функции). В отличие от функций: * внутри «блоков» могут использоваться переменные, доступные функции, внутри которой создавался «блок». Для работы с блоками компилятор генерирует дополнительный код. В процессе выполнения программы для каждого создаваемого блока этот код создаёт скрытый объект. Объект содержит следующие поля: * ссылка на код блока; * значения локальных переменных, доступных функции, внутри которой блок был создан. Чтобы сообщить компилятору о том, что в переменной будет храниться адрес «блока» (а не обычной функции) следует использовать особое ключевое слово. Ключевое слово не требуется, если «блок» и переменная находятся в одной области видимости. (ru)
  • 块(blocks)是由LLVM提出的类似于lambda表达式的非标准C语言扩展,亦可以应用于Objective-C与C++中。它的语法类似于这些函数中的闭包,即由大括号包括的语句块。 苹果设计块的一个目的是使设计基于线程结构的程序更容易,但块是独立于这一构架的,它也可以在其它程序中以与普通语句块十分相似的方式应用。苹果已经在苹果修改版的GCC编译器以及Clang LLVM编译器前端中实现了这一特性;同时,LLVM计划,包括了支持块特性的运行时库。 与函数定义类似,块可以有参数,也可以在其内部声明私有变量。与普通的C函数定义不同,块可以使用其上文中定义的变量。一个块定义会产生一个不透明的值,该值同时包括了块内代码的引用和定义时栈内局部变量的快照(而非调用时)。块可以在定义后被调用,其行为与函数指针相同。块可以如同函数指针一般被赋值到变量中,作为函数的参数传递,但若块需要在其被定义的范围之外被使用时,程序员(或API)需要将该块用特别的运算符(Block_copy)标记。 在定义块之后,块内的代码可以在任何时间被调用,语法与调用函数相同。 (zh)
gold:hypernym
prov:wasDerivedFrom
page length (characters) of wiki page
foaf:isPrimaryTopicOf
is Link from a Wikipage to another Wikipage of
is Wikipage disambiguates of
is foaf:primaryTopic of
Faceted Search & Find service v1.17_git139 as of Feb 29 2024


Alternative Linked Data Documents: ODE     Content Formats:   [cxml] [csv]     RDF   [text] [turtle] [ld+json] [rdf+json] [rdf+xml]     ODATA   [atom+xml] [odata+json]     Microdata   [microdata+json] [html]    About   
This material is Open Knowledge   W3C Semantic Web Technology [RDF Data] Valid XHTML + RDFa
OpenLink Virtuoso version 08.03.3330 as of Mar 19 2024, on Linux (x86_64-generic-linux-glibc212), Single-Server Edition (378 GB total memory, 63 GB memory in use)
Data on this page belongs to its respective rights holders.
Virtuoso Faceted Browser Copyright © 2009-2024 OpenLink Software