Для C/C++, похоже, нет переносимой функции для получения имени пользователя в Linux/Posix и Windows. Какой был бы наименее громоздкий и в то же время надежный переносимый код для достижения этой цели?
В Linux переменная окружения USER, по-видимому, всегда определена, тогда как Windows, похоже, определяет переменную USERNAME. Полагаясь на getenv, можно было бы избежать включения windows.h и минимизировать операторы препроцессора:
char * user_name = getenv("USER");
if (!user_name) {
user_name = getenv("USERNAME");
}
Но является ли этот подход наполовину надежным? Или я не знаю другого решения? А еще я был несведущ в отношении iOS...