NDK, fscanf и плавающие константы - PullRequest
0 голосов
/ 08 июля 2019

У нас проблемы с переносом кода C на Android.Обычно мы можем использовать fscanf для чтения следующей строки:

4818852=-0x1.5fef5d6abbaa9p-13

, где мы будем использовать следующий код:

uint64_t f;
double v;
fscanf(file, "%lu=%la\n", &f, &v);

Чтение работает в Linux, но не в Android.

Есть ли известный обходной путь для этого?

1 Ответ

0 голосов
/ 08 июля 2019

На каких версиях Android вы воспроизвели проблему?В Android libc (Bionic) довольно долго не хватало, но оно получило довольно большое обновление вокруг Android 5.0.

В случае, если исправление доступно в более новой версии Bionic, одним из возможных путей может быть статическоесвязать libc.Я не уверен, обеспечивает ли NDK прямой способ сделать это, но они по крайней мере предоставляют libc.a.Таким образом, нацеливаясь на достаточно новую версию SDK и статически связывая libc, вы можете эффективно связать фиксированную версию.

Другой, потенциально более практичный выбор, - найти отдельную реализацию, например, sscanf, связать ее.и объединить его, например, с libc fgets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...