problem using std.format on Arm
Jeremiah Glover
jeremiah7glover at gmail.com
Sat Aug 8 17:00:17 UTC 2020
I've been wanting to put together a programming to teach D. The
raspberry pi seemed like a good computer to use so everyone could
be guaranteed to have a computer to practice on. I've had some
trouble, however, getting a test project to compile, and the
first culprit lives in std.format.
I tried both LDC and GDC by using `sudo apt install ldc` and
`sudo apt install gdc`
compiling my test file with ldc gives these errors
/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/format.d(620):
Error: can only * a pointer, not a 'int'
/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/format.d(631):
Error: can only * a pointer, not a 'int'
/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/format.d(620):
Error: using * on an array is no longer supported; use
*(_param_2).ptr instead
/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/format.d(631):
Error: using * on an array is no longer supported; use
*(_param_2).ptr instead
/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/format.d(633):
Error: template instance std.format.formattedRead!(char[], char,
string) error instantiating
diceware.d(26): instantiated from here:
formattedRead!(char[], char, int, string)
diceware.d(39): Error: template std.format.formattedRead cannot
deduce function from argument types !()(string, string, int),
candidates are:
/usr/lib/ldc/arm-linux-gnueabihf/include/d/std/format.d(588):
std.format.formattedRead(R, Char, S...)(ref R r, const(Char)[]
fmt, S args)
compiling with gdc gives these errors:
/usr/lib/gcc/arm-linux-gnueabihf/6/include/d/std/format.d:618:26:
error: can only * a pointer, not a 'int'
alias A = typeof(*args[0]);
^
/usr/lib/gcc/arm-linux-gnueabihf/6/include/d/std/format.d:629:13:
error: can only * a pointer, not a 'int'
*args[0] = unformatValue!(A)(r, spec);
^
/usr/lib/gcc/arm-linux-gnueabihf/6/include/d/std/format.d:618:26:
error: using * on an array is no longer supported; use
*(_param_2).ptr instead
alias A = typeof(*args[0]);
^
/usr/lib/gcc/arm-linux-gnueabihf/6/include/d/std/format.d:629:13:
error: using * on an array is no longer supported; use
*(_param_2).ptr instead
*args[0] = unformatValue!(A)(r, spec);
^
/usr/lib/gcc/arm-linux-gnueabihf/6/include/d/std/format.d:631:33:
error: template instance std.format.formattedRead!(char[], char,
string) error instantiating
return 1 + formattedRead(r, spec.trailing, args[1 .. $]);
^
/home/pi/diceware/diceware.d:26:22: note: instantiated from here:
formattedRead!(char[], char, int, string)
formattedRead(line, "%d\t%s", dummy, word);
^
/home/pi/diceware/diceware.d:39:18: error: template
std.format.formattedRead cannot deduce function from argument
types !()(string, string, int), candidates are:
formattedRead(readln.strip, "%d", num_words);
^
/usr/lib/gcc/arm-linux-gnueabihf/6/include/d/std/format.d:586:6:
note: std.format.formattedRead(R, Char, S...)(ref R r,
const(Char)[] fmt, S args)
uint formattedRead(R, Char, S...)(ref R r, const(Char)[] fmt, S
args)
You can find my test file and a text file that makes the program
work at https://github.com/d-us-vb/diceware. It compiles without
warning on my (x86) laptop.
Looking at format.d on the RPi and on my laptop, I noticed that
the desktop version of phobos doesn't have those places of trying
to dereference an array element, so I tried replacing format.d on
my raspberry pi with the format.d I have on my laptop. This
produced some other errors, which I won't bother posting yet.
What can I do to fix this and get the most recent version of
phobos that will compile?
More information about the Digitalmars-d-learn
mailing list