原因は良く分からないのだけど、C言語用のpostgresのAPIの環境と一緒に使うと、コンパイルエラーが発生する現象に悩まされていた。
#include#include int main(int argc, char **argv) { fprintf(stderr, "start\n"); usleep(1000000); fprintf(stderr, "end\n"); return 0; }
で、これまで見たことがない、以下のエラーが発生するようになってしまった。
error: 'usleep' was not declared in this scope usleep(1000);
原因ははっきりしないのだけど、
g++ -g db20190415.cpp -o db20190415 -I"D:\PostgreSQL\10\include" -L"D:\PostgreSQL\10\lib" -llibpq -lwsock32 -lws2_32
とか、
#include "libpq-fe.h"
が怪しそうである(これらを追加したら、出てきたから)。
==============
暫く悩んだのだけど、usleep()を使わない方法を、試してみた。
#include#include int main(int argc, char **argv) { struct timespec ts; fprintf(stderr, "start\n"); ts.tv_sec = 0; ts.tv_nsec = 999999999/35; // 1/35秒と見なして良い nanosleep(&ts, NULL); fprintf(stderr, "end\n"); return 0; } // 出展 https://www.mm2d.net/main/prog/c/sleep-01.html
これで良しとした。