8
C ++ 03とC ++ 11の間に、実行時に検出できる違いがあるとすれば、どのようなものですか?
Cコンパイラーでコンパイルすると0を返し、C ++コンパイラーでコンパイルすると1を返す関数を書くことができます(取るに足らない解決策#ifdef __cplusplusは興味深いもので はありません)。 例えば: int isCPP() { return sizeof(char) == sizeof 'c'; } もちろん、上記がとsizeof (char)同じでない場合にのみ機能しますsizeof (int) 別のよりポータブルなソリューションは次のようなものです: int isCPP() { typedef int T; { struct T { int a[2]; }; return sizeof(T) == sizeof(struct T); } } 例が100%正しいかどうかはわかりませんが、あなたは考えを理解しています。同じ関数を書く方法は他にもあると思います。 C ++ 03とC ++ 11の間に、実行時に検出できる違いがあるとすれば、どのようなものですか?言い換えると、それが適合C ++ 03コンパイラーによってコンパイルされたかC ++ 11コンパイラーによってコンパイルされたかを示すブール値を返す同様の関数を作成することは可能ですか? bool isCpp11() …