writeln () или writefln ()? - PullRequest
       1

writeln () или writefln ()?

7 голосов
/ 29 марта 2011

Hello World for D выглядит так:

import std.stdio;

void main(string[] args)
{
    writeln("Hello World, Reloaded");
}

от http://www.digitalmars.com/d/

Но когда я компилирую это с помощью gdc-4.4.5, я получаю:

hello.d:5: Error: undefined identifier writeln, did you mean function writefln?
hello.d:5: Error: function expected before (), not __error of type _error_

Это D1 / D2? Библиотека вещь? Кажется странным, что writefln - это функция библиотеки stdio, а writeln - нет.

Ответы [ 2 ]

7 голосов
/ 29 марта 2011

Да, writeln доступно только в стандартной библиотеке D2.

4 голосов
/ 29 марта 2011

Как упоминает CyberShadow, writeln только в D2. Разница между ними состоит в том, что writeln просто печатает свои аргументы как есть, в то время как writefln интерпретирует свой первый аргумент как строку формата, как в C printf.

Пример:

import std.stdio;

void main() {
    // Prints "There have been 44 U.S. presidents."  Note that %s can be used
    // to print the default string representation for any type.
    writefln("There have been %s U.S. presidents.", 44);

    // Same thing
    writeln("There have been ", 44, " U.S. presidents.");
}
...