Тест

Это что? О каком именно конструкторе речь?

Речь о конструкторе который вызывается при создании объекта.

:confusedparrot: какого объекта?

Где он тут?

#include <stdio.h>

int sum(int a, int b) {
    return a + b;
}

int main()
{
    int a;
    printf("Enter a number: ");
    scanf("%d", &a);
    printf("%d", sum(a, a));

    return 0;
}

Так в этом коде ты пытаешься прочесть ячейку памяти в которую еще ни чего не записал. объект не создан. Где конструктор?
P. S.
Точнее, был создан объект. Но в него ни чего не положили. Но попытались вернуть результат.

Что за бред? В Си без плюсов вообще объектов/конструкторов нет, и как-то же работают программы, и большинство программ на Си скомпилируются/будут работать и в С++ )

Так почему бред? Собери код что выше. Какой тебе вернется результат?

Дык это ж почти хеллоуворлд из любого учебника в главе про функции.

https://onlinegdb.com/YfrWRFF_8-

Ладно тебе холло ворд.
ответ на вопрос первого поста я уже дал.
Если кто обосновательно переубедит, буду рад выслушать мнения…

P. S.
Не удержался.
во твоем коде это что:

 scanf("%d", &a);

Это и есть конструктор функции. Без этого конструктора что вернет функция?

Это вызов функции.
Зачем называть это конструктором?) Нигде такого не слышал, и даже гугл не знает.

Гугл много чего не знает о реальных возможностях Си и плюсов.
Если нужно включить в код функцию без конструктора, например для вызова из другого приложения. Нужен пустой конструктор, иначе будет игнор компилятором.

P. S.
У автора темы стандартный вопрос из тестов на знание возможностей Си и плюсов.

Да даже Страуструп и Ритчи вряд ли называет/называл вызов функции словом “конструктор”.
Зачем так делать?
Вызов функции это вызов функции.
Конструктор это такая штука в языках с классами, которая вызывается при создании экземпляра класса.

Так программы обычно вызывают функции из библиотек, а не из других программ. В библиотеках нет такой проблемы, + есть атрибуты типа dllexport и т.д., никакой нормальный компилятор не удалит функции предоставляемые библиотекой )

Вот как раз Страуструп или Прата описывали этот момент.
В Си нет возможности объявить функцию без конструктора.
Эта фича появилась в плюсах. В каком именно стандарте врать не стану, не помню. Не акцентировал на этом внимание и если честно на практике ни разу применять не приходилось.
Но фича такая в плюсах есть.

В смысле? А как тогда кучу библиотек на Си создают уже много десятков лет?

И я не про возможности говорил, а про то, что никто не называет вызов функции конструктором.

Библиотеки сишные здесь как фигурируют?

А я о вопросе ТС …

Что значит “в Си нет возможности объявить функцию без конструктора”?

Дык и препод ТС наверняка сильно удивится если ТС начнет называть вызовы функций конструкторами ))

Так не вызов функции конструктор. Сама функция должна иметь внутри тела конструктор. А если есть необходимость создать функцию без конструктора, то плюсы такое позволяют. Я об этом.

И препод. такой вопрос не задаст, это больше похоже на тест перед собесом на вакансию …

Это как? :confusedparrot:

Теперь я совсем не понимаю о чем речь.
Нужен пример кода, с указанием где именно в нем конструктор )

Ок.
Подниму архивы своего обучения, приведу пример. Не сейчас.
Немного иными задачами занят. Слов на ветер не бросаю.

P. S.
Повторюсь, преподы в универах таких тонкостей знания языка не спрашивают. Это только на собесе могут спросить.

Речь про ООП-шные методы что ли? Так и там есть функции-члены класса, а не объекта.
Или про особенности войны с оптимизатором в компиляторе?)
Только вопрос в тесте про обычный void.

Это не возвращаемое функцией значение, а побочный эффект.

Вот и я об этом.

Оптимизатор это вообще стоит вынести в отдельную тему. Особенно когда даже разработчик компилятора не способен дать детальный и конкретный фидбэк по оптимизации ))