Различие между пустотой основное и международное основное? [дубликат]

Это очень возможно, но без дополнительных библиотек, таких как Reflections, это сложно ... Это сложно, потому что у вас нет полного инструмента для получения имени класса. И я беру код моего класса ClassFinder:

package play.util;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

/**
 * Created by LINKOR on 26.05.2017 in 15:12.
 * Date: 2017.05.26
 */
public class FileClassFinder {
private JarFile file;
private boolean trouble;
public FileClassFinder(String filePath) {
    try {
        file = new JarFile(filePath);
    } catch (IOException e) {
        trouble = true;
    }
}

public List<String> findClasses(String pkg) {
    ArrayList<String> classes = new ArrayList<>();
    Enumeration<JarEntry> entries = file.entries();
    while (entries.hasMoreElements()) {
        JarEntry cls = entries.nextElement();
        if (!cls.isDirectory()) {
            String fileName = cls.getName();
            String className = fileName.replaceAll("/",         ".").replaceAll(File.pathSeparator, ".").substring(0, fileName.lastIndexOf('.'));
            if (className.startsWith(pkg)) classes.add(className.substring(pkg.length() + 1));
        }
    }
    return classes;
}
}
53
задан GEOCHET 12 March 2009 в 12:01
поделиться

8 ответов

Различие, каждый - корректный способ определить main, и другой не.

И да, это действительно имеет значение. Или

int main(int argc, char** argv)

или

int main()

надлежащее определение Вашего main на спецификацию C++.

void main(int argc, char** argv)

не и был, IIRC, порочность, которая шла с компиляторами C++ более старой Microsoft.

https://isocpp.org/wiki/faq/newbie#main-returns-int

69
ответ дан Alan 7 November 2019 в 18:29
поделиться

Bjarne Stroustrup ясно дал следующее определение:

Определение void main() не является и никогда не было ни С++, ни даже не было С.

See reference.

25
ответ дан 7 November 2019 в 08:29
поделиться

В C++, main() должен возвращать int. Однако, C99 позволяет функциям main() иметь тип возврата, отличный от int. Вот выдержка из стандарта C99.

5.1.2.2.1 Запуск программы

Функция, вызываемая при запуске программы, называется main. Реализация объявляет об отсутствии прототип этой функции. Она должна быть определена с возвращаемым типом int и без параметры:

int main(void) { /* ... */ }

или с двумя параметрами (здесь упоминаются как argc и argv, хотя любые имена могут быть используются, так как они локальны для функции, в которой они объявлены):

int main(int argc, char *argv[]) { /* ... */ }

или эквивалент; или каким-либо другим способом реализации.

Также обратите внимание, что gcc действительно компилирует void main(), хотя на практике при столкновении с закрывающей скобкой возвращает 0;.

3
ответ дан 7 November 2019 в 08:29
поделиться

Необходимо использовать int main. И C и стандарты C++ определяют, что main должен возвратить значение.

12
ответ дан Azeem 7 November 2019 в 18:29
поделиться

Давным-давно я нашел эта страница (освободите основной (пустота)) , который содержал много причин за пределами, "в стандарте говорится, что это не допустимый" аргумент. В конкретных операционных системах/архитектуре это могло заставить стек становиться поврежденными и или другими противными вещами произойти.

3
ответ дан X-Istence 7 November 2019 в 18:29
поделиться

Точка, C программы (и C++, то же) всегда (должен?) возвращают значение успеха или код ошибки, таким образом, они должны быть объявлены тем путем.

4
ответ дан Svante 7 November 2019 в 18:29
поделиться

Для C++ только позволяется интервал. Для C C99 говорит только, что интервал позволяется. Предшествующий стандарт допускал void возврат.

Короче говоря, всегда int.

9
ответ дан Azeem 7 November 2019 в 18:29
поделиться

Если Вы идете спецификацией, то необходимо всегда объявлять main возврат int.

В действительности, тем не менее, большинство компиляторов позволит Вам сойти с рук любой, таким образом, реальная разница будет то, если Вы хотите / должен возвратить значение оболочке.

2
ответ дан Azeem 7 November 2019 в 18:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: