7.5 Errors はソースコードが事実上なし。
7.7 Characteristics of floating types ソースコードなし
はじめに(Introduction)
N3054 Working Draft, Standard for Programming Language C
http://www.open-std.org/jtc1/sc22/wg14/docs/papers/2022/n3054.pdf
C++ nは、ISO/IEC JTC1 SC22 WG14の作業原案(Working Draft)です。
公式のISO/IEC 9899原本ではありません。
ISO/IEC JTC1 SC22 のWG14を含むいくつかのWGでは、可能な限り作業文書を公開し、幅広い意見を求めています。
ISO/IEC JTC1 SC7からISO/IEC JTC1 SC22リエゾンとして、2000年頃、C/C++の品質向上に貢献しようとした活動をしていたことがあります。その頃は、まだISO/IEC TS 17961の原案が出る前です。Cの精神が優勢で、セキュリティ対策は補助的な位置付けでした。ISO/IEC TS 17961の制定と、C/C++のライブラリ類の見直しと、C++の進化はどんどん進んでいきます。
進化の具合が、どちらに行こうとしているかは、コンパイルて実行させてみないとわかりません。C/C++の規格案の電子ファイルは、そのままコンパイルできる形式であるとよいと主張してきました。MISRA-C/C++, CERTC/C++でも同様です。MISRA-C/C++は、Example Suiteという形で、コード断片をコンパイルできる形で提供するようになりました。
一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(gcc, clang)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C/C++, MISRA C/C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, 箱庭プロジェクト、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。
最新規格はCN3096
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf
背景(back ground)
C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。
過去に何度か、自分のネットでの記録に助けられたことがあります。
https://stackoverflow.com
また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。
作業方針(sequence)
clangでは--std=c11, -std=C17 -std=c2xの3種類
gccでは-std=c11, -std=C17 -std=c2xの3種類
でコンパイルし、
1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。
1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。
$ docker run -v /Users/ogawakiyoshi/n4910/n3540:/Users/ogawakiyoshi/n4910/n3540 -it kaizenjapan/n3540 /bin/bash
読書感想文
CコンパイラによるC言語規格の読書感想文として掲載しています。
コンパイル実験が、CN3242に対する、gccとclangによる感想文だということご理解いただけると幸いです。
読書感想文は人間かAIだけが作るものとは限りません。
本(電子書籍を含む)を入力として、その内容に対する文字列を読書感想文として受け止めましょう。
元の文章をあり方、コンパイルできるように電子化しておくこと、コンパイラが解釈可能な断片の作り方など。
https://qiita.com/tags/読書感想文
個人開発
Cコンパイラの試験を一人でもくもくとやっているのは個人開発の一つの姿です。
https://qiita.com/tags/個人開発
編纂器(Compiler)
clang --version
Debian clang version 14.0.6-++20220622053050+f28c006a5895-1~exp1~20220622173135.152
Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin
gcc --version
gcc (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7.6 Floating-point environment , CN3054:2022 (17) p211.c
算譜(source code)
// CN3054 Committee Draft, Standard for Programming Language C
// http://www.open-std.org/jtc1/sc22/wg14/docs/papers/2022/n3054.pdf
const char * n3054 = "7.6 Floating-point environment <fenv.h>, CN3054:2022 (17) p211.c";
// Debian clang version 14.0.5-++20220610033153+c12386ae247c-
// g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
// Edited by Dr. OGAWA Kiyoshi. Compile procedure and results record.
// C++N3054:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list
#include "N3054.h"
// 7.6.1 The FENV_ACCESS pragma Synopsis
// The FENV_ACCESS pragma provides a means to inform the implementation when a program might access the floating-point environment to test floating-point status flags or run under non-default floating-point control modes.263) The pragma shall occur either outside external declarations or preceding all explicit declarations and statements inside a compound statement. When outside external declarations, the pragma takes effect from its occurrence until another FENV_ACCESS pragma is encountered, or until the end of the translation unit. When inside a compound statement, the pragma takes effect from its occurrence until another FENV_ACCESS pragma is encountered (including within a nested compound statement), or until the end of the compound statement. At the end of a compound statement, the state for the pragma is restored to its condition just before the compound statement. If this pragma is used in any other context, the behavior is undefined. If part of a program tests floating-point status flags or establishes non-default floating-point mode settings using any means other than the FENV_ROUND pragmas, but was translated with the state for the FENV_ACCESS pragma "off", the behavior is undefined. The default state ("on" or "off") for the pragma is implementation-defined. (When execution passes from a part of the program translated with FENV_ACCESS "off" to a part translated with FENV_ACCESS "on", the state of the floating-point status flags is unspecified and the floating-point control modes have their default settings.)
// EXAMPLE
// 262)See "future library directions" (7.33.4).
// 263)The purpose of the FENV_ACCESS pragma is to allow certain optimizations that could subvert flag tests and mode changes (e.g., global common subexpression elimination, code motion, and constant folding). In general, if the state of FENV_ACCESS is "off", the translator can assume that the flags are not tested, and that default modes are in effect, except where specified otherwise by an FENV_ROUND pragma.
// Description
#include <fenv.h>
#pragma STDC FENV_ACCESS on-off-switch
#include <fenv.h>
void f(double x) {
}
#pragma STDC FENV_ACCESS ON
void g(double);
void h(double);
/* ... */
g(x + 1);
h(x + 1); /* ... */
// If the function g might depend on status // flags set as a side effect of the first x + 1, or if the second x + 1might depend on control modes set as aside effect of the call to functiong, then the program has to contain an appropriately placed invocation of
#pragma STDC FENV_ACCESS ONasshown.264)
// 7.6.2 The FENV_ROUND pragma Synopsis
// The FENV_ROUND pragma provides a means to specify a constant rounding direction for floating-point operations for standard floating types within a translation unit or compound statement. The pragma shall occur either outside external declarations or before all explicit declarations and statements inside a compound statement. When outside external declarations, the pragma takes effect from its occurrence until another FENV_ROUND pragma is encountered, or until the end of the translation unit. When inside a compound statement, the pragma takes effect from its occurrence until another FENV_ROUND pragma is encountered (including within a nested compound statement), or until the end of the compound statement; at the end of a compound statement the static rounding mode is restored to its condition just before the compound statement. If this pragma is used in any other context, its behavior is undefined.
// direction shall be one of the names of the supported rounding direction macros for operations for standard floating types (7.6), or FE_DYNAMIC. If any other value is specified, the behavior is unde- fined. If no FENV_ROUND pragma is in effect, or the specified constant rounding mode is FE_DYNAMIC, rounding is according to the mode specified by the dynamic floating-point environment, which is the dynamic rounding mode that was established either at thread creation or by a call to fesetround, fesetmode, fesetenv, or feupdateenv. If the FE_DYNAMIC mode is specified and FENV_ACCESS is "off", the translator may assume that the default rounding mode is in effect.
// The FENV_ROUND pragma affects operations for standard floating types. Within the scope of an FENV_ROUND pragma establishing a mode other than FE_DYNAMIC, floating-point operators, implicit conversions (including the conversion of a value represented in a format wider than its semantic types to its semantic type, as done by classification macros), and invocations of functions indicated in the table below, for which macro replacement has not been suppressed (7.1.4), shall be evaluated according to the specified constant rounding mode (as though no constant mode was specified and the corresponding dynamic rounding mode had been established by a call to fesetround). Invocations of functions for which macro replacement has been suppressed and invocations of functions other than those indicated in the table below shall not be affected by constant rounding modes – they are affected by (and affect) only the dynamic mode. Floating constants (6.4.4.2) of a standard floating type that occur in the scope of a constant rounding mode shall be interpreted according to that mode.
// 264)The side effects impose a temporal ordering that requires two evaluations of x + 1. On the other hand, without the
#pragma STDC FENV_ACCESS ON
// pragma and assuming the default state is "off", just on e evaluation of x + 1 would suffice.
// Description
#include <fenv.h>
#pragma STDC FENV_ROUND direction
#pragma STDC FENV_ROUND FE_DYNAMIC
// Functions affected by constant rounding modes – for standard
// floating types
// Header
// Function families
// <math.h>
// acos, acospi, asin, asinpi, atan, atan2, atan2pi, atanpi
// <math.h>
// cos, cospi, sin, sinpi, tan, tanpi
// <math.h>
// acosh, asinh, atanh
// <math.h>
// cosh, sinh, tanh
// <math.h>
// exp, exp10, exp10m1, exp2, exp2m1, expm1
// <math.h>
// log, log10, log10p1, log1p, log2, log2p1, logp1
// <math.h>
// scalbn, scalbln, ldexp
// <math.h>
// cbrt, compoundn, hypot, pow, pown, powr, rootn, rsqrt, sqrt
// <math.h>
// erf, erfc
// <math.h>
// lgamma, tgamma
// <math.h>
// rint, nearbyint, lrint, llrint
// <math.h>
// fdim
// <math.h>
// fma
// <math.h>
// fadd, dadd, fsub, dsub, fmul, dmul, fdiv, ddiv, ffma, dfma, fsqrt, dsqrt
// <stdlib.h>
// atof, strfrom, strto
// <wchar.h>
// wcsto
// <stdio.h>
// printf and scanf families
// <wchar.h>
// wprintf and wscanf families
// A function family listed in the table above indicates the functions for all standard floating types, where the function family is represented by the name of the functions without a suffix. For example, acos indicates the functions acos, acosf, and acosl.
// NOTE 1 Constant rounding modes (other than FE_DYNAMIC) could be implemented using dynamic rounding modes as illustrated in the following example:
// where __swapround is defined by:
// 7.6.3 The FENV_DEC_ROUND pragma Synopsis
#include <fenv.h>
{
#pragma STDC FENV_ROUND direction // compiler inserts:
}
// #pragma STDC FENV_ACCESS ON
// int __savedrnd;
// __savedrnd = __swapround(direction);
//... operations affected by constant rounding mode ...
// compiler inserts:
// __savedrnd = __swapround(__savedrnd);
//... operations not affected by constant rounding mode ...
// compiler inserts:
// __savedrnd = __swapround(__savedrnd);
//... operations affected by constant rounding mode ...
// compiler inserts:
// __swapround(__savedrnd);
static inline int __swapround(const int new) {
const int old = fegetround();
fesetround(new);
return old;
}
#ifdef __STDC_IEC_60559_DFP__
#pragma STDC FENV_DEC_ROUND dec-direction
#endif
// Description
// The FENV_DEC_ROUND pragma is a decimal floating-point analog of the FENV_ROUND pragma. If FLT_RADIX is not 10, the FENV_DEC_ROUND pragma affects operators, functions, and floating con- stants only for decimal floating types. The affected functions are listed in the table below. If FLT_RADIX is 10, whether the FENV_ROUND and FENV_DEC_ROUND pragmas alter the rounding direc- tion of both standard and decimal floating-point operations is implementation-defined. dec-direction shall be one of the decimal rounding direction macro names (FE_DEC_DOWNWARD, FE_DEC_TONEAREST , FE_DEC_TONEARESTFROMZERO, FE_DEC_TOWARDZERO, and FE_DEC_UPWARD) defined in 7.6, to specify a constant rounding mode, or FE_DEC_DYNAMIC, to specify dynamic rounding. The corresponding dynamic rounding mode can be established by a call to fe_dec_setround.
// Functions affected by constant rounding modes – for decimal float- ing types
// Header
// Function families
// <math.h>
// acos, acospi, asin, asinpi, atan, atan2, atan2pi, atanpi
// <math.h>
// cos, cospi, sin, sinpi, tan, tanpi
// <math.h>
// acosh, asinh, atanh
// <math.h>
// cosh, sinh, tanh
// <math.h>
// exp, exp10, exp10m1, exp2, exp2m1, expm1
// <math.h>
// log, log10, log10p1, log1p, log2, log2p1, logp1
// <math.h>
// scalbn, scalbln, ldexp
// <math.h>
// cbrt, compoundn, hypot, pow, pown, powr, rootn, rsqrt, sqrt
// <math.h>
// erf, erfc
// <math.h>
// lgamma, tgamma
// <math.h>
// rint, nearbyint, lrint, llrint
// <math.h>
// quantize
// <math.h>
// fdim
// <math.h>
// fma
// <math.h>
// d32add, d64add, d32sub, d64sub, d32mul, d64mul, d32div, d64div, d32fma, d64fma, d32sqrt, d64sqrt
// <stdlib.h>
// strfrom, strto
// <wchar.h>
// wcsto
// <stdio.h>
// printf and scanf families
// <wchar.h>
// wprintf and wscanf families
// A function family listed in the table above indicates the functions for all decimal floating types, where the function family is represented by the name of the functions without a suffix. For example, acos indicates the functions acosd32, acosd64, and acosd128.
// 7.6.4 Floating-point exceptions
// The following functions provide access to the floating-point status flags.265) The int input argument for the functions represents a subset of floating-point exceptions, and can be zero or the bitwise ORofoneormorefloating-pointexceptionmacros,forexampleFE_OVERFLOW | FE_INEXACT.For other argument values, the behavior of these functions is undefined.
// 7.6.4.1 The feclearexcept function
// 265)The functions fetestexcept, feraiseexcept, and feclearexcept support the basic abstraction of flags that are either set or clear. An implementation can endow floating-point status flags with more information — for example, the address of the code which first raised the floating-point exception; the functions fegetexceptflag and fesetexceptflag deal with the full content of flags.
// Synopsis
// The feclearexcept function attempts to clear the supported floating-point exceptions represented by its argument.
// Returns
// The feclearexcept function returns zero if the excepts argument is zero or if all the specified exceptions were successfully cleared. Otherwise, it returns a nonzero value.
// 7.6.4.2 The fegetexceptflag function Synopsis
// The fegetexceptflag function attempts to store an implementation-defined representation of the states of the floating-point status flags indicated by the argument excepts in the object pointed to by the argument flagp.
// Returns
// The fegetexceptflag function returns zero if the representation was successfully stored. Otherwise, it returns a nonzero value.
// 7.6.4.3 The feraiseexcept function Synopsis
// The feraiseexcept function attempts to raise the supported floating-point exceptions represented by its argument. 266) The order in which these floating-point exceptions are raised is unspecified, except as stated in F.8.6. Whether the feraiseexcept function additionally raises the "inexact" floating-point exception whenever it raises the "overflow" or "underflow" floating-point exception is implementation-defined.
// Returns
// The feraiseexcept function returns zero if the excepts argument is zero or if all the specified exceptions were successfully raised. Otherwise, it returns a nonzero value.
// Recommended Practice
// Implementation extensions associated with raising a floating-point exception (for example, enabled traps or IEC 60559 alternate exception handling) should be honored by this function.
// 7.6.4.4 The fesetexcept function Synopsis
// Description
// Description
// Description
#include <fenv.h>
int feclearexcept(int excepts);
#include <fenv.h>
int fegetexceptflag(fexcept_t *flagp, int excepts);
#include <fenv.h>
int feraiseexcept(int excepts);
#include <fenv.h>
int fesetexcept(int excepts);
// 266)The effect is intended to be similar to that of floating-point exceptions raised by arithmetic operations. Hence, implemen- tation extensions associated with raising a floating-point exception (for example, enabled traps or IEC 60559 alternate exception handling) should be honored. The specification in F.8.6 is in the same spirit.Description
// The fesetexcept function attempts to set the supported floating-point exception flags represented by its argument. This function does not clear any floating-point exception flags. This function changes the state of the floating-point exception flags, but does not cause any other side effects that might be associated with raising floating-point exceptions. 267)
// Returns
// The fesetexcept function returns zero if all the specified exceptions were successfully set or if the excepts argument is zero. Otherwise, it returns a nonzero value.
// 7.6.4.5 The fesetexceptflag function Synopsis
// The fesetexceptflag function attempts to set the floating-point status flags indicated by the argument excepts to the states stored in the object pointed to by flagp. The value of *flagp shall have been set by a previous call to fegetexceptflag whose second argument represented at least those floating-point exceptions represented by the argument excepts. Like fesetexcept, this function does not raise floating-point exceptions, but only sets the state of the flags.
// Returns
// The fesetexceptflag function returns zero if the excepts argument is zero or if all the specified flags were successfully set to the appropriate state. Otherwise, it returns a nonzero value.
// 7.6.4.6 The fetestexceptflag function Synopsis
// The fetestexceptflag function determines which of a specified subset of the floating-point excep- tion flags are set in the object pointed to by flagp. The value of *flagp shall have been set by a previous call to fegetexceptflag whose second argument represented at least those floating-point exceptions represented by the argument excepts. The excepts argument specifies the floating-point status flags to be queried.
// Returns
// The fetestexceptflag function returns the value of the bitwise OR of the floating-point exception macros included in excepts corresponding to the floating-point exceptions set in *flagp.
// 7.6.4.7 The fetestexcept function Synopsis
// The fetestexcept function determines which of a specified subset of the floating-point excep- tion flags are currently set. The excepts argument specifies the floating-point status flags to be queried.268)
// 267)Implementation extensions like traps for floating-point exceptions and IEC 60559 exception handling do not occur. 268)This mechanism allows testing several floating-point exceptions with just one function call.
// Description
// Description
// Description
#include <fenv.h>
int fesetexceptflag(const fexcept_t *flagp, int excepts);
#include <fenv.h>
int fetestexceptflag(const fexcept_t * flagp, int excepts);
#include <fenv.h>
int fetestexcept(int excepts);
// Returns
// The fetestexcept function returns the value of the bitwise OR of the floating-point exception macros corresponding to the currently set floating-point exceptions included in excepts.
// EXAMPLE Call f if "invalid" is set, then g if "overflow" is set:
#include <fenv.h> /* ... */
{
#pragma STDC FENV_ACCESS ON
int set_excepts;
feclearexcept(FE_INVALID | FE_OVERFLOW); // maybe raise exceptions
set_excepts = fetestexcept(FE_INVALID | FE_OVERFLOW);
if (set_excepts & FE_INVALID) f();
if (set_excepts & FE_OVERFLOW) g();
/* ... */
// 7.6.5 Rounding and other control modes
// The fegetround and fesetround functions provide control of rounding direction modes. The fegetmode and fesetmode functions manage all the implementation’s dynamic floating-point control modes collectively.
// 7.6.5.1 The fegetmode function Synopsis
// The fegetmode function attempts to store all the dynamic floating-point control modes in the object pointed to by modep.
// Returns
// The fegetmode function returns zero if the modes were successfully stored. Otherwise, it returns a nonzero value.
// 7.6.5.2 The fegetround function Synopsis
// The fegetround function gets the current value of the dynamic rounding direction mode. Returns
// The fegetround function returns the value of the rounding direction macro representing the current dynamic rounding direction or a negative value if there is no such rounding direction macro or the current dynamic rounding direction is not determinable.
// 7.6.5.3 The fe_dec_getround function Synopsis
// Description
// Description
#include <fenv.h>
int fegetmode(femode_t *modep);
#include <fenv.h>
int fegetround(void);
#include <fenv.h>
#ifdef __STDC_IEC_60559_DFP__
int fe_dec_getround(void);
#endif
// Description
// The fe_dec_getround function gets the current value of the dynamic rounding direction mode for decimal floating-point operations.
// Returns
// The fe_dec_getround function returns the value of the rounding direction macro representing the current dynamic rounding direction for decimal floating-point operations, or a negative value if there is no such rounding macro or the current rounding direction is not determinable.
// 7.6.5.4 The fesetmode function Synopsis
// The fesetmode function attempts to establish the dynamic floating-point modes represented by the object pointed to by modep. The argument modep shall point to an object set by a call to fegetmode, or equal FE_DFL_MODE or a dynamic floating-point mode state macro defined by the implementation.
// Returns
// The fesetmode fesetmode function returns zero if the modes were successfully established. Other- wise, it returns a nonzero value.
// 7.6.5.5 The fesetround function Synopsis
// The fesetround function establishes the rounding direction represented by its argument rnd. If the argument is not equal to the value of a rounding direction macro, the rounding direction is not changed.
// Returns
// The fesetround function returns zero if and only if the dynamic rounding direction mode was set to the requested rounding direction.
// EXAMPLE Save, set, and restore the rounding direction. Report an error and abort if setting the rounding direction fails.
// Description
// Description
#include <fenv.h>
int fesetmode(const femode_t *modep);
#include <fenv.h>
int fesetround(int rnd);
#include <fenv.h>
#include <assert.h>
void f(int rnd_dir) {
#pragma STDC FENV_ACCESS ON
int save_round;
int setround_ok;
save_round = fegetround();
setround_ok = fesetround(rnd_dir);
assert(setround_ok == 0);
/* ... */ fesetround(save_round); /* ... */
}
// 7.6.5.6 The fe_dec_setround function Synopsis
// The fe_dec_setround function sets the dynamic rounding direction mode for decimal floating- point operations to be the rounding direction represented by its argument rnd. If the argument is not equal to the value of a decimal rounding direction macro, the rounding direction is not changed.
// If FLT_RADIX is not 10, the rounding direction altered by the fesetround function is independent of the rounding direction altered by the fe_dec_setround function; otherwise if FLT_RADIX is 10, whether the fesetround and fe_dec_setround functions alter the rounding direction of both standard and decimal floating-point operations is implementation-defined.
// Returns
// The fe_dec_setround function returns a zero value if and only if the argument is equal to a decimal rounding direction macro (that is, if and only if the dynamic rounding direction mode for decimal floating-point operations was set to the requested rounding direction).
// 7.6.6 Environment
// The functions in this section manage the floating-point environment // — status flags and control modes — as one entity.
// 7.6.6.1 The fegetenv function Synopsis
// The fegetenv function attempts to store the current dynamic floating-point environment in the object pointed to by envp.
// Returns
// The fegetenv function returns zero if the environment was successfully stored. Otherwise, it returns a nonzero value.
// 7.6.6.2 The feholdexcept function Synopsis
// The feholdexcept function saves the current dynamic floating-point environment in the object pointed to by envp, clears the floating-point status flags, and then installs a non-stop (continue on floating-point exceptions) mode, if available, for all floating-point exceptions.269)
// 269)IEC 60559 systems have a default non-stop mode, and typically at least one other mode for trap handling or aborting; if the system provides only the non-stop mode then installing it is trivial. For such systems, the feholdexcept function can be used in conjunction with the feupdateenv function to write routines that hide spurious floating-point exceptions from their callers.
#include <fenv.h>
#ifdef __STDC_IEC_60559_DFP__
int fe_dec_setround(int rnd);
#endif
// Description
// Description
// Description
#include <fenv.h>
int fegetenv(fenv_t *envp);
#include <fenv.h>
int feholdexcept(fenv_t *envp);
// Returns
// The feholdexcept function returns zero if and only if non-stop floating-point exception handling was successfully installed.
// 7.6.6.3 The fesetenv function Synopsis
// The fesetenv function attempts to establish the dynamic floating-point environment represented by the object pointed to by envp. The argument envp shall point to an object set by a call to fegetenv or feholdexcept, or equal a dynamic floating-point environment macro. Note that fesetenv merely installs the state of the floating-point status flags represented through its argument, and does not raise these floating-point exceptions.
// Returns
// The fesetenv function returns zero if the environment was successfully established. Otherwise, it returns a nonzero value.
// 7.6.6.4 The feupdateenv function Synopsis
// The feupdateenv function attempts to save the currently raised floating-point exceptions in its automatic storage, install the dynamic floating-point environment represented by the object pointed to by envp, and then raise the saved floating-point exceptions. The argument envp shall point to an object set by a call to feholdexcept or fegetenv, or equal a dynamic floating-point environment macro.
// Returns
// The feupdateenv function returns zero if all the actions were successfully carried out. Otherwise, it returns a nonzero value.
// EXAMPLE Hide spurious underflow floating-point exceptions:
#include <fenv.h>
double f(double x) {
// Description
// Description
#include <fenv.h>
int fesetenv(const fenv_t *envp);
#include <fenv.h>
int feupdateenv(const fenv_t *envp);
}
int main() {
// PR3(st.a,st.b,st.c,d);
printf("%s\n", n3054);
return EXIT_SUCCESS;
}
編纂・実行結果(compile and go)
$ clang p211.c -std=11 -o p211l -I. -Wall
p211.c:18:26: warning: expected 'ON' or 'OFF' or 'DEFAULT' in pragma [-Wunknown-pragmas]
#pragma STDC FENV_ACCESS on-off-switch
^
p211.c:26:3: error: unknown type name 'x'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:5: error: expected ')'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:2: note: to match this '('
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:13: error: unknown type name 'x'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:15: error: expected ')'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:12: note: to match this '('
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:11: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
g(x + 1); h(x + 1); /* ... */
^
p211.c:28:26: warning: expected 'ON' or 'OFF' or 'DEFAULT' in pragma [-Wunknown-pragmas]
#pragma STDC FENV_ACCESS ONasshown.264)
^
p211.c:38:25: warning: invalid or unsupported rounding mode in '#pragma STDC FENV_ROUND' - ignored [-Wignored-pragmas]
#pragma STDC FENV_ROUND direction
^
p211.c:39:35: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]
#pragma STDC FENV_ROUND FE_DYNAMIC
^
p211.c:85:1: error: expected identifier or '('
{
^
p211.c:86:25: warning: invalid or unsupported rounding mode in '#pragma STDC FENV_ROUND' - ignored [-Wignored-pragmas]
#pragma STDC FENV_ROUND direction // compiler inserts:
^
p211.c:210:1: error: expected identifier or '('
{
^
7 warnings and 6 errors generated.
$ clang p211.c -std=17 -o p211l -I. -Wall
p211.c:18:26: warning: expected 'ON' or 'OFF' or 'DEFAULT' in pragma [-Wunknown-pragmas]
#pragma STDC FENV_ACCESS on-off-switch
^
p211.c:26:3: error: unknown type name 'x'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:5: error: expected ')'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:2: note: to match this '('
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:13: error: unknown type name 'x'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:15: error: expected ')'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:12: note: to match this '('
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:11: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
g(x + 1); h(x + 1); /* ... */
^
p211.c:28:26: warning: expected 'ON' or 'OFF' or 'DEFAULT' in pragma [-Wunknown-pragmas]
#pragma STDC FENV_ACCESS ONasshown.264)
^
p211.c:38:25: warning: invalid or unsupported rounding mode in '#pragma STDC FENV_ROUND' - ignored [-Wignored-pragmas]
#pragma STDC FENV_ROUND direction
^
p211.c:39:35: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]
#pragma STDC FENV_ROUND FE_DYNAMIC
^
p211.c:85:1: error: expected identifier or '('
{
^
p211.c:86:25: warning: invalid or unsupported rounding mode in '#pragma STDC FENV_ROUND' - ignored [-Wignored-pragmas]
#pragma STDC FENV_ROUND direction // compiler inserts:
^
p211.c:210:1: error: expected identifier or '('
{
^
7 warnings and 6 errors generated.
$ clang p211.c -std=2x -o p211l -I. -Wall
p211.c:18:26: warning: expected 'ON' or 'OFF' or 'DEFAULT' in pragma [-Wunknown-pragmas]
#pragma STDC FENV_ACCESS on-off-switch
^
p211.c:26:3: error: unknown type name 'x'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:5: error: expected ')'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:2: note: to match this '('
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:13: error: unknown type name 'x'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:15: error: expected ')'
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:12: note: to match this '('
g(x + 1); h(x + 1); /* ... */
^
p211.c:26:11: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
g(x + 1); h(x + 1); /* ... */
^
p211.c:28:26: warning: expected 'ON' or 'OFF' or 'DEFAULT' in pragma [-Wunknown-pragmas]
#pragma STDC FENV_ACCESS ONasshown.264)
^
p211.c:38:25: warning: invalid or unsupported rounding mode in '#pragma STDC FENV_ROUND' - ignored [-Wignored-pragmas]
#pragma STDC FENV_ROUND direction
^
p211.c:39:35: warning: pragma STDC FENV_ROUND is not supported [-Wunknown-pragmas]
#pragma STDC FENV_ROUND FE_DYNAMIC
^
p211.c:85:1: error: expected identifier or '('
{
^
p211.c:86:25: warning: invalid or unsupported rounding mode in '#pragma STDC FENV_ROUND' - ignored [-Wignored-pragmas]
#pragma STDC FENV_ROUND direction // compiler inserts:
^
p211.c:210:1: error: expected identifier or '('
{
^
7 warnings and 6 errors generated.
$ gcc p211.c -std=11 -o p211g -I. -Wall
p211.c:18: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
18 | #pragma STDC FENV_ACCESS on-off-switch
|
p211.c:22: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
22 | #pragma STDC FENV_ACCESS ON
|
p211.c:26:4: error: expected ')' before '+' token
26 | g(x + 1); h(x + 1); /* ... */
| ^~
| )
p211.c:26:14: error: expected ')' before '+' token
26 | g(x + 1); h(x + 1); /* ... */
| ^~
| )
p211.c:28: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
28 | #pragma STDC FENV_ACCESS ONasshown.264)
|
p211.c:34: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
34 | #pragma STDC FENV_ACCESS ON
|
p211.c:38: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
38 | #pragma STDC FENV_ROUND direction
|
p211.c:39: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
39 | #pragma STDC FENV_ROUND FE_DYNAMIC
|
p211.c:85:1: error: expected identifier or '(' before '{' token
85 | {
| ^
p211.c:86: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
86 | #pragma STDC FENV_ROUND direction // compiler inserts:
|
p211.c:210:1: error: expected identifier or '(' before '{' token
210 | {
| ^
p211.c:211: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
211 | #pragma STDC FENV_ACCESS ON
|
p211.c:259: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
259 | #pragma STDC FENV_ACCESS ON
|
$ gcc p211.c -std=c17 -o p211g -I. -Wall
p211.c:18: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
18 | #pragma STDC FENV_ACCESS on-off-switch
|
p211.c:22: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
22 | #pragma STDC FENV_ACCESS ON
|
p211.c:26:4: error: expected ')' before '+' token
26 | g(x + 1); h(x + 1); /* ... */
| ^~
| )
p211.c:26:14: error: expected ')' before '+' token
26 | g(x + 1); h(x + 1); /* ... */
| ^~
| )
p211.c:28: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
28 | #pragma STDC FENV_ACCESS ONasshown.264)
|
p211.c:34: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
34 | #pragma STDC FENV_ACCESS ON
|
p211.c:38: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
38 | #pragma STDC FENV_ROUND direction
|
p211.c:39: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
39 | #pragma STDC FENV_ROUND FE_DYNAMIC
|
p211.c:85:1: error: expected identifier or '(' before '{' token
85 | {
| ^
p211.c:86: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
86 | #pragma STDC FENV_ROUND direction // compiler inserts:
|
p211.c:210:1: error: expected identifier or '(' before '{' token
210 | {
| ^
p211.c:211: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
211 | #pragma STDC FENV_ACCESS ON
|
p211.c:259: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
259 | #pragma STDC FENV_ACCESS ON
|
$ gcc p211.c -std=c2x -o p211g -I. -Wall
p211.c:18: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
18 | #pragma STDC FENV_ACCESS on-off-switch
|
p211.c:22: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
22 | #pragma STDC FENV_ACCESS ON
|
p211.c:26:4: error: expected ')' before '+' token
26 | g(x + 1); h(x + 1); /* ... */
| ^~
| )
p211.c:26:14: error: expected ')' before '+' token
26 | g(x + 1); h(x + 1); /* ... */
| ^~
| )
p211.c:28: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
28 | #pragma STDC FENV_ACCESS ONasshown.264)
|
p211.c:34: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
34 | #pragma STDC FENV_ACCESS ON
|
p211.c:38: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
38 | #pragma STDC FENV_ROUND direction
|
p211.c:39: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
39 | #pragma STDC FENV_ROUND FE_DYNAMIC
|
p211.c:85:1: error: expected identifier or '(' before '{' token
85 | {
| ^
p211.c:86: warning: ignoring '#pragma STDC FENV_ROUND' [-Wunknown-pragmas]
86 | #pragma STDC FENV_ROUND direction // compiler inserts:
|
p211.c:210:1: error: expected identifier or '(' before '{' token
210 | {
| ^
p211.c:211: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
211 | #pragma STDC FENV_ACCESS ON
|
p211.c:259: warning: ignoring '#pragma STDC FENV_ACCESS' [-Wunknown-pragmas]
259 | #pragma STDC FENV_ACCESS ON
|
検討事項(agenda)
コンパイルエラーを取るか、コンパイルエラーの理由を解説する。
応用例1 MISRA C/C++
MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74
応用例2 CERT C/C++
SEI CERT C++ Coding Standard AA. Bibliography 確認中。
https://qiita.com/kaizen_nagoya/items/fe06719aef10f3f985ae
MISRA C/C++, AUTOSAR C++, CERT C/C++とC/C++工業標準をコンパイルする
https://qiita.com/kaizen_nagoya/items/8dff19511e42b2593db1
自己参考資料(self reference)
関連する自己参照以外は、こちらの先頭に移転。
C言語(C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a
C2011コンパイル一覧@researchmap
https://researchmap.jp/jownvh0ye-1797580/#_1797580
[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de
C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9
dockerにclang
https://qiita.com/kaizen_nagoya/items/8829ffeee397eda50e80
docker gnu(gcc/g++) and llvm(clang/clang++)
https://qiita.com/kaizen_nagoya/items/059874ea39c4de64c0f7
コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da
astyle 使ってみた
https://qiita.com/kaizen_nagoya/items/3c9a87a781d53a1a23f3
<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words and/or centences in order.
Este artículo no está completo. Agregaré algunas palabras en orden.
Qiita Calendar 2024
祝休日・謹賀新年 2025年の目標
https://qiita.com/kaizen_nagoya/items/dfa34827932f99c59bbc
Qiita 1年間をまとめた「振り返りページ」@2024
https://qiita.com/kaizen_nagoya/items/ed6be239119c99b15828
2024 参加・主催Calendarと投稿記事一覧 Qiita(248)
https://qiita.com/kaizen_nagoya/items/d80b8fbac2496df7827f
主催Calendar2024分析 Qiita(254)
https://qiita.com/kaizen_nagoya/items/15807336d583076f70bc
Calendar 統計
https://qiita.com/kaizen_nagoya/items/e315558dcea8ee3fe43e
LLM 関連 Calendar 2024
https://qiita.com/kaizen_nagoya/items/c36033cf66862d5496fa
Large Language Model Related Calendar
https://qiita.com/kaizen_nagoya/items/3beb0bc3fb71e3ae6d66
博士論文 Calendar 2024 を開催します。
https://qiita.com/kaizen_nagoya/items/51601357efbcaf1057d0
博士論文(0)関連記事一覧
https://qiita.com/kaizen_nagoya/items/8f223a760e607b705e78
関連資料
' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da
' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1
' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e
自己記事一覧
Qiitaで逆リンクを表示しなくなったような気がする。時々、スマフォで表示するとあらわっることがあり、完全に削除したのではなさそう。
4月以降、せっせとリンクリストを作り、統計を取って確率を説明しようとしている。
2025年2月末を目標にしている。
一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39
仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df
Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6
Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8
C++ Support(0)
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514
Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0
Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794
Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0
線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001
なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2
プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394
言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4
Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53
安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409
プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909
転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe
技術士(0)一覧
https://qiita.com/kaizen_nagoya/items/ce4ccf4eb9c5600b89ea
Reserchmap(0) 一覧
https://qiita.com/kaizen_nagoya/items/506c79e562f406c4257e
物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff
量子(0) 計算機, 量子力学
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4
数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d
coq(0) 一覧
https://qiita.com/kaizen_nagoya/items/d22f9995cf2173bc3b13
統計(0)一覧
https://qiita.com/kaizen_nagoya/items/80d3b221807e53e88aba
図(0) state, sequence and timing. UML and お絵描き
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f
色(0) 記事100書く切り口
https://qiita.com/kaizen_nagoya/items/22331c0335ed34326b9b
品質一覧
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971
言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6
医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82
水の資料集(0) 方針と成果
https://qiita.com/kaizen_nagoya/items/f5dbb30087ea732b52aa
自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5
通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7
日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68
英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d
音楽 一覧(0)
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d
「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b
鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/faa4ea03d91d901a618a
OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3
coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68
官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3
「はじめての」シリーズ ベクタージャパン
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb
AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
LaTeX(0) 一覧
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792
自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b
Rust(0) 一覧
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927
programの本質は計画だ。programは設計だ。
https://qiita.com/kaizen_nagoya/items/c8545a769c246a458c27
登壇直後版 色使い(JIS安全色) Qiita Engineer Festa 2023〜私しか得しないニッチな技術でLT〜 スライド編 0.15
https://qiita.com/kaizen_nagoya/items/f0d3070d839f4f735b2b
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
逆も真:社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc
統計の嘘。仮説(127)
https://qiita.com/kaizen_nagoya/items/63b48ecf258a3471c51b
自分の言葉だけで論理展開できるのが天才なら、文章の引用だけで論理展開できるのが秀才だ。仮説(136)
https://qiita.com/kaizen_nagoya/items/97cf07b9e24f860624dd
参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1
「何を」よりも「誰を」。10年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2
Qiitaの記事に3段階または5段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e
出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840
coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68
あなたは「勘違いまとめ」から、勘違いだと言っていることが勘違いだといくつ見つけられますか。人間の間違い(human error(125))の種類と対策
https://qiita.com/kaizen_nagoya/items/ae391b77fffb098b8fb4
プログラマの「プログラムが書ける」思い込みは強みだ。3つの理由。仮説(168)統計と確率(17) , OSEK(79)
https://qiita.com/kaizen_nagoya/items/bc5dd86e414de402ec29
出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840
これからの情報伝達手段の在り方について考えてみよう。炎上と便乗。
https://qiita.com/kaizen_nagoya/items/71a09077ac195214f0db
ISO/IEC JTC1 SC7 Software and System Engineering
https://qiita.com/kaizen_nagoya/items/48b43f0f6976a078d907
アクセシビリティの知見を発信しよう!(再び)
https://qiita.com/kaizen_nagoya/items/03457eb9ee74105ee618
統計論及確率論輪講(再び)
https://qiita.com/kaizen_nagoya/items/590874ccfca988e85ea3
読者の心をグッと惹き寄せる7つの魔法
https://qiita.com/kaizen_nagoya/items/b1b5e89bd5c0a211d862
「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b
ソースコードで議論しよう。日本語で議論するの止めましょう(あるプログラミング技術の議論報告)
https://qiita.com/kaizen_nagoya/items/8b9811c80f3338c6c0b0
脳内コンパイラの3つの危険
https://qiita.com/kaizen_nagoya/items/7025cf2d7bd9f276e382
心理学の本を読むよりはコンパイラ書いた方がよくね。仮説(34)
https://qiita.com/kaizen_nagoya/items/fa715732cc148e48880e
NASAを超えるつもりがあれば読んでください。
https://qiita.com/kaizen_nagoya/items/e81669f9cb53109157f6
データサイエンティストの気づき!「勉強して仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!!
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07
「ぼくの好きな先生」「人がやらないことをやれ」プログラマになるまで。仮説(37)
https://qiita.com/kaizen_nagoya/items/53e4bded9fe5f724b3c4
なぜ経済学徒を辞め、計算機屋になったか(経済学部入学前・入学後・卒業後対応) 転職(1)
https://qiita.com/kaizen_nagoya/items/06335a1d24c099733f64
プログラミング言語教育のXYZ。 仮説(52)
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4
【24卒向け】9ヶ月後に年収1000万円を目指す。二つの関門と三つの道。
https://qiita.com/kaizen_nagoya/items/fb5bff147193f726ad25
「【25卒向け】Qiita Career Meetup for STUDENT」予習の勧め
https://qiita.com/kaizen_nagoya/items/00eadb8a6e738cb6336f
大学入試不合格でも筆記試験のない大学に入って卒業できる。卒業しなくても博士になれる。
https://qiita.com/kaizen_nagoya/items/74adec99f396d64b5fd5
全世界の不登校の子供たち「博士論文」を書こう。世界子供博士論文遠隔実践中心 安全(99)
https://qiita.com/kaizen_nagoya/items/912d69032c012bcc84f2
小川メソッド 覚え(書きかけ)
https://qiita.com/kaizen_nagoya/items/3593d72eca551742df68
DoCAP(ドゥーキャップ)って何ですか?
https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327
views 20,000越え自己記事一覧
https://qiita.com/kaizen_nagoya/items/58e8bd6450957cdecd81
Views1万越え、もうすぐ1万記事一覧 最近いいねをいただいた213記事
https://qiita.com/kaizen_nagoya/items/d2b805717a92459ce853
amazon 殿堂入りNo1レビュアになるまで。仮説(102)
https://qiita.com/kaizen_nagoya/items/83259d18921ce75a91f4
100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a
小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on my individual experience. It has nothing to do with the organization or business to which I currently belong.
Este artículo es una impresión personal basada en mi experiencia personal. No tiene nada que ver con la organización o empresa a la que pertenezco actualmente.
文書履歴(document history)
ver. 0.01 初稿 20221120
ver. 0.02 ありがとう追記 20230622
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.
Muchas gracias por leer hasta la última oración.
Por favor, haz clic en el ícono Me gusta 💚 y sígueme para tener una vida feliz.