Кіріспе

Аргументтердің санын өзгерте алатын макрос
Вариадикалық макрос – кейбір компьютерлік бағдарламалау тілдерінің, әсіресе C препроцессорының мүмкіндігі, оның арқасында макрос өзгермелі сандағы аргументтерді қабылдауға дайындығын білдіре алады. Өзгермелі аргументтерді қабылдайтын макростар 1999 жылы ISO/IEC 9899:1999 (C99) C тілі стандартының жаңа нұсқасында, ал 2011 жылы ISO/IEC 14882:2011 (C++11) C++ тілі стандартының жаңа нұсқасында енгізілді. Аргументтері жоқ вариадикалық макростарға қолдау C++20-да қосылды және C23-де қосылмақ. C99 және C++11 стандарттары кем дегенде бір аргумент талап етеді, бірақ C++20-дан бастап бұл шектеу функционалдық макрос арқылы жойылды. Макрос аргументтердің болған жағдайында олармен алмастырылады, әйтпесе жойылады. Көптеген компиляторлар осы жаңа мүмкіндік қосылғанға дейін нөлдік аргументтерді де қабылдауға рұқсат береді. C препроцессорының ережелері макрос атының аргументтер ішінде рекурсивті түрде кеңеюіне жол бермейді. Дегенмен, бұл шектеуді рекурсивті кеңейтулердің белгілі бір санына дейін айналып өтуге болады.

Қолдау

Бірнеше компилятор C және C++ кодтарын компиляциялау кезінде өзгермелі аргументтерді қабылдайтын макростарды қолдайды: GNU Compiler Collection 3.0, Visual Studio 2005, GCC сондай-ақ Objective C компиляциялау кезінде мұндай макростарды қолдайды.

GNU Compiler Collection 8, Clang 6 және Visual Studio 2019 нұсқаларында нөлдік аргументтерді қолдайтын макросқа қолдау қосылды.

Соңғы үтір

C99 стандартында өзгергіш макростар үшін бос аргументтермен соңғы үтірді жасауда үйлесімділік мәселесі бар. Кейбір компиляторлар (мысалы, Visual Studio жаңа стандартқа сәйкес препроцессорды қолданбағанда)