Если вы не хотели использовать регулярное выражение ...
var chunks = [];
for (var i = 0, charsLength = str.length; i < charsLength; i += 3) {
chunks.push(str.substring(i, i + 3));
}
jsFiddle .
... в противном случае решение регулярного выражения довольно хорошо:)
extern "C" делает имя функции в C ++ связью с 'C' (компилятор не изменяет имя), чтобы клиентский код C мог связываться с вашей функцией (т. Е. Использовать) с помощью Заголовочный файл, совместимый с 'C', который содержит только объявление вашей функции. Определение вашей функции содержится в двоичном формате (который был скомпилирован вашим компилятором C ++), который затем связывается компоновщиком клиента C с использованием имени C.
Поскольку C ++ имеет перегрузку имен функций, а C нет , компилятор C ++ не может просто использовать имя функции в качестве уникального идентификатора для ссылки, поэтому он искажает имя, добавляя информацию об аргументах. Компилятору AC не нужно искажать имя, поскольку вы не можете перегрузить имена функций в C. Когда вы заявляете, что функция имеет внешнюю связь «C» в C ++, Только имена функций и имена переменных с внешней связью имеют языковую связь
Он сообщает компилятору C ++ искать имена этих функций в C-стиль при компоновке, потому что имена функций, скомпилированных на C и C ++, на этапе компоновки различаются.
Он изменяет привязку функции таким образом, что функция вызывается из C. На практике это означает, что имя функции не искажено .
В каждом C ++ В программе все нестатические функции представлены в двоичном файле как символы. Эти символы представляют собой специальные текстовые строки, которые однозначно идентифицируют функцию в программе.
В языке C имя символа совпадает с именем функции. Это возможно, потому что в C две нестатические функции не могут иметь одно и то же имя.
Поскольку C ++ допускает перегрузку и имеет много функций, которых нет в C - например, классы, функции-члены, спецификации исключений - невозможно просто использовать имя функции как имя символа. Чтобы решить эту проблему, C ++ использует так называемое искажение имен, доступ к нему осуществляется с использованием имени символа в качестве имени функции.
Это удобно при использовании dlsym ()
и dlopen ()
для вызова таких функций.