最初の投稿で誤りがありました。ICUは C API を提供しています。
したがって、そのライブラリへの依存が許容できる場合は、次のスニペットを使用して移植可能な週の最初を取得できます。
#include <stdio.h>
/* for calendar functions */
#include <unicode/ucal.h>
/* for u_cleanup() */
#include <unicode/uclean.h>
/* for uloc_getDefault() */
#include <unicode/uloc.h>
int main()
{
/* it *has* to be pre-set */
UErrorCode err = U_ZERO_ERROR;
UCalendar* cal = ucal_open(
0, -1, /* default timezone */
uloc_getDefault(), /* default (current) locale */
UCAL_DEFAULT, /* default calendar type */
&err);
if (!cal)
{
fprintf(stderr, "ICU error: %s\n", u_errorName(err));
u_cleanup();
return 1;
}
/* 1 for sunday, 2 for monday, etc. */
printf("%d\n", ucal_getAttribute(cal, UCAL_FIRST_DAY_OF_WEEK));
ucal_close(cal);
u_cleanup();
return 0;
}
icu-i18n
次に、プログラムをpkg-config ライブラリとリンクします。
ああ、興味があるかもしれないなら、カレンダーを印刷する非常に広範な例があります。