Никита Конин:
Это и C++ тоже ... унаследованное из C, но макросы в C++ на практике никто практически не использует, там для этого гораздо более мощный механизм template.
Но вопрос был задан про C: #include "stdio.h"
Олег Цилюрик: >макросы в C++ на практике никто практически не использует
>для этого гораздо более мощный механизм template
Превращение аргумента в строку или склеивание двух аргументов возможно сделать только с помощью макросов. BOOST_TTI_*, например это часть boost::type_traits, которая не вошла в стандарт, но очень часто используется. Как и boost::preprocessor.
> Но вопрос был задан про C:
> #include "stdio.h"
Совершенно внезапно этот заголовочный файл существует и в С++.
Совершенно внезапно этот заголовочный файл существует и в С++.
Это только в очень кондовых C++ используется этот заголовочный файл, в новых (4.Х.Х) - используется , косвенно ссылающийся и на
... так же, собственно, как , , и др.
В C++ эти файлы именуются по определённому шаблону
В C - stdio.h, в C++ - cstdio (убрали ".h" и добавили "c" в начале) - и так для всех стандартных файлов C.
kloppspb: >А вот мой g++, например, его не находит
Ваш g++ работает неправильно. Стандарт С++ гарантирует:
1) Все заголовочные файлы С ( name.h ) доступны в С++ (и дополнительно доступны файлы ( cname ) с некоторыми отличиями )
2) Если при попытке включить файл при помощи #include "name" файл не обнаружен, поиск повторяется как если бы было написано #include < name >
Очень вредно ссылаться в таких вопросах на сайт Microsoft. Они не брезгуют нарушением стандарта и вообще пропихиванием своей фигни, не имея к языкам никакого отношения.