問題タブ [c11]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C11 cor 1:2012 とは?
ISO/IEC 9899:2011/Cor 1:2012と呼ばれる C11 標準に対する修正があることに気付きました。
この更新で何が変更されましたか?
c - (x++, y) + (y++, x) は未定義または未指定ですか? 未指定の場合、何を計算できますか?
コンマ シーケンス演算子は、式にシーケンス ポイントを導入します。これは、以下のプログラムが未定義の動作を回避することを意味するかどうか疑問に思っています。
未定義の動作を回避する場合でも、未指定のままである可能性があります。つまり、いくつかの可能な値の 1 つを返します。C99 では しか計算できないと思いますが1
、実際には、さまざまなバージョンの GCC がこのプログラムを を返す実行可能ファイルにコンパイルします2
。Clang は を返す実行可能ファイルを生成します。これ1
は私の直感と一致しているようです。
最後に、これはC11で変更されたものですか?
c - なぜC標準には、役に立たない多くの安全でない関数が含まれているのですか?
たとえば、C標準に多くの安全でない関数が含まれているのはなぜですか。これらの関数は役に立たず(優れたプログラムでは使用されません)、有害getchar
です。なぜC標準には、それらの代わりに便利な関数、たとえば、、が含まれていないのgetch
ですgetche
か?これは多くの例の1つにすぎません...
UPD私は混乱しました:gets
の代わりにgetchar
。
c - -fms-extensions なしで「ネストされた構造体」を作成していますか?
私はいくつかのプロパティを持つ構造体を持っています:
同じプロパティを持つ構造体もありますが、id
.
C11 が匿名構造体をサポートしていることはわかっているので、次のようなことができます。
ただし、内部構造体にタグを付けると失敗します。のような非標準のコンパイラ オプションを使用せずに、このようなネストされた構造体を作成することは可能-fms-extensions
ですか?
c++ - 関数定義外の __func__
__func__
C (C99 / C11) および C++ で定義済みの変数を関数の外で使用するとどうなりますか?
-Wall -W -pedantic
gcc 4.7.2 は (有効な状態で)警告のみを表示し、何も出力しません。
標準はそれについて明示的に何も言いません:
ISO/IEC 14882:2011
8.4.1 一般 [dcl.fct.def.general]
8関数ローカルの定義済み変数
__func__
は、形式の定義static const char __func__[] = "function-name";
が提供されたかのように定義されます。ここで、関数名は実装定義の文字列です。そのような変数が、プログラム内の他のオブジェクトのアドレスとは異なるアドレスを持つかどうかは指定されていません。
ISO/IEC 9899:2011
6.4.2.2 事前定義された識別子
1識別子
__func__
は、各関数定義の左中括弧の直後に宣言があるかのように、翻訳者によって暗黙的に宣言されるものとしますstatic const char __func__[] = "function-name";
。ここで、関数名は字句的に囲んでいる関数の名前です。
ウブ?エラー?または、他の何か?
c - マクロは、渡された型に基づいて有効なグローバル名をどのように定義できますか?
タイトルは一目瞭然だと思いますが、私が達成しようとしていることを説明する例を次に示します。
char
、int
、および単一単語の型ではすべて正常に機能しunsigned
ますが、複数のキーワードを持つ型やその他の型に関しては、トークンの貼り付け ( a ## b
) を使用すると、空白 (例: ) が原因で有効な名前が生成されませんdo_something_with_foo bar
。
私が考えることができる最も簡単な解決策はDEFINE_OPS_FOR_TYPE
、2 番目のパラメーターとして有効な名前を取るようにマクロを変更することです。例えば:
これは期待どおりに機能しますが、非常に複雑であっても、他の可能な解決策に興味があります。を使用することを考え_Generic
ましたが、名前の定義にどのように役立つかわかりません。
別の解決策を考えられますか?
c++ - C と C++ の __func__ 値の違い
C 標準では _ _ func _ _ value が常に囲んでいる関数の名前であることが保証されているのに、C++ (もちろん C++11 のことです) では実装定義の任意の文字列 (たとえば、パラメータなしの関数 foo がある場合、「Some string fdgdg asdfs fsdf sd」のようなものを取得できます)?
ISO/IEC 9899:2011
6.4.2.2 事前定義された識別子
セマンティクス
1 識別子 _ _ func _ _ は、各関数定義の左中括弧の直後に宣言 static const char _ func _ [] = "function-name";のように、翻訳者によって暗黙的に宣言されるものとします。function-name は字句的に囲んでいる関数の名前です。
ISO/IEC 14882:2011
8.4.1 一般 [dcl.fct.def.general]
8 関数ローカルの定義済み変数 _ _ func _ _ は、静的 const char _ _ func _ _ [] = "関数名 "; という形式の定義であるかのように定義されます。function-name は実装定義の文字列です。そのような変数が、プログラム内の他のオブジェクトのアドレスとは異なるアドレスを持つかどうかは指定されていません。
そして、これの理由は何ですか?現在の関数名を取得できない場合、「不明」のようなものを返しますか?
c - C99+での構造体の部分的な割り当て
英語が下手でごめんなさい。
コード(C99以降)を想定します。
今は何f.a
ですか?C規格はこれについて何か言っていますか?
部分的な初期化の場合、標準では、初期化されていないすべてのメンバーが「適切なゼロ」(0
整数、0.0
浮動小数点、NULL
ポインターなど)に初期化されることが保証されていることを知っています。しかし、最後のステートメントは(私が理解しているように)初期化ではありませんf
。すでに存在しているからです。よくわかりません。
c - Cの_Thread_localストレージクラス指定子?
私は本CHowto Program 7thで、次の名前の新しい標準Cストレージクラスに関するメモを読みました_Thread_local
。
新しいC標準では、ストレージクラス指定子が追加されています
_Thread_local
が、これはこの本の範囲を超えています。
Googleで探しましたが、ここには何も表示されません。誰かが私にそれについてのリンクを教えてもらえますか?
c - char16_tで動作するstrlen()はありますか?
質問が言うように:
C++ソリューションのみを検索して見つけました。
私のコンパイラはGCC 4.7
です。
編集:
code points
明確にするために、私はのカウントではなく、のカウントを返すソリューションを探していましたcharacters
。
これら2つはUTF-16
、の外の文字を含む文字列ではまったく異なりますBMP
。