Попробуйте >>
в file1.txt
вместо >
. >>
будет добавляться к файлу в отличие от >
, перезаписывая весь файл. Попробуйте -
wc -l < file1.txt >> file1.txt
При использовании каких-либо инструментов конфигурирования как автоинструменты, можно попытаться записать тест как:
AC_CHECK_HEADER(tr1/unordered_map,[AC_DEFINE([HAVE_TR1],[],["Have tr1"])],[])
AC_CHECK_HEADER(unordered_map,[AC_DEFINE([HAVE_CXX0X],[],["Have C++0x"])],[])
И затем используйте, они определяют в Вашем коде.
Вообще говоря, __cplusplus
макрос должен дать Вам число стандартной версии, но нет никакого компилятора, который дает Вам 100%-ю стандартную реализацию... Таким образом запись настраивает макросы.
К сожалению, это - только довольно надежный способ проверить такие вещи, если Вы не хотите записать 1001 #ifdef
для каждого компилятора (что повышение делает),
И затем:
#include "config.h"
#ifdef HAVE_CXX0X
# include <unordered_map>
typedef std::unordered_map<foo,bar> my_map;
#elif HAVE_TR1
# include <tr1/unordered_map>
typedef std::tr1::unordered_map<foo,bar> my_map;
#else
# include <map>
typedef std::map<foo,bar> my_map;
#endif
GCC-4.3 имеет:
#define __GXX_EXPERIMENTAL_CXX0X__ 1
Но, это, очевидно, не стандартно.
Посмотрите ISO C++ (WG21) бумага N1575. Данная статья была отброшена от TR1 без замены. Таким образом, нет никакого официального способа обнаружить TR1.
Одна библиотека я имею дело с потребностями использовать некоторые классы, которые были добавлены к TR1 от Повышения, предпочтя TR1 при наличии. Решение (являющийся Основанной на Unix библиотекой) состоит в том, чтобы пихнуть проверки в настраивать сценарий.
Так, другими словами, нет, ничто портативное, что я знаю о. Тем не менее, если Вы находитесь на Unix, настраивать работа проверок сценария достаточно хорошо.