TopCoderのコンパイラバージョンって判別むずかしい…

Java

バージョンを調べるAPI

	public void printVersion() {
		System.out.println(System.getProperty("java.version"));
	}

上記を実行して調べた結果、1.5.0_08でした。
Java‚̃o[ƒWƒ‡ƒ“‚ðƒvƒƒOƒ‰ƒ€‚ÅŠm”F‚·‚é(Javaƒ}ƒXƒ^[)

C++

プリプロセッサマクロで調べました。

#include <cstdio>

#define strx(x) #x
#define str(x) strx(x)

void printVer() {
    printf("_MSC_VER=%s\n", str(_MSC_VER));
    printf("GNUC: %s,%s,%s\n", str(__GNUC__), str(__GNUC_MINOR__), str(__GNUC_PATCHLEVEL__));
}

GNUCの4.0.2でした。
Microsoft Visual C++ - Wikipedia
Common Predefined Macros - The C Preprocessor

C#

バージョンを調べるAPIは弾かれます。

	public void checkVersion() {
		new System.Collections.Generic.Queue<int>(); // 2.0 original
		System.Windows.Application app; // 3.0 original
		new System.Collections.Generic.HashSet<int>(); // 3.5 original
		new StringBuilder("This is a string.").Clear(); // 4.0 original
	}

上記をコンパイルして調べた結果、2.0でした。
@IT:.NET TIPS ビルド時および実行時のCLRバージョンを取得するには? - C# VB.NET


.NET Framework Version 2.0 の新機能




.NET Framework Version 3.0 の新機能




.NET Framework Version 3.5 の新機能