|
Программирование >> Перегруженные имена функций и идентификаторы
содержащую желаемые значения, или подумайте о глобальных переменных (если их немного). Если есть указатель (char *) на имя функции в виде стринга, то как эту функцию вызвать? Наиболее прямолинейный путь - создание таблицы имен и соответствующих им указателей: int function1(), function2(); struct {char *name; int (*funcptr)(); } symtab[] = function1 , function1, function2 , function2, Ну а теперь нужно поискать в таблице нужное имя и вызвать функцию, используя связанный с именем указатель. У меня, кажется, нет головного файла <sgtty.h>. Где мне его взять? Стандартные головные файлы существуют в том смысле, что содержат информацию, необходимую компилятору, операционной системе и процессору. Чужой головной фай подойдет лишь тогда, когда взят из идентичного окружения. Поинтересуйтесь у продавца компилятора, почему отсутствует головной файл, или попросите прислать новый взамен потерянного. Как вызвать процедуры, написанные на языке FORTRAN (C++,BASIC,Pascal, Ada, Lisp) из Си (и наоборот)? Ответ полностью зависит от машины и от специфики передачи параметров различными компиляторами. Решения вообще может не быть. Внимательно читайте руководство по компилятору. Иногда в документации имеется Руководство по смешанному программированию , хотя техника передачи аргументов и обеспечения правильного входа в функцию зачастую весьма таинственна. Дополнительная информация находится в файле FORT.gz Глена Гирса, (G1enn Geers) который можно получить с помощью ftp suphys.physics.su.oz.au в директории src. Головной фай cfortran.h упрощает взаимодействие C/FORTRAN на многих популярных машинах. cfortran.h можно получит через ftp zebra.desy.de (131.169.2.244). В C++ модификатор C внешней функции показывает, что функция будет вызываться с использованием соглашения о передаче параметров языка Си. Кто-нибудь знает о программах, переводящих Pascal или FORTRAN (или LISP, Ada, awk, старый Си) в Си? Есть несколько общедоступных программ: p2c - переводчик с Паскаля на Си, написанный Дейвом Гиллеспи, (Dave Gillespie) помещен в comp.sources.unix в Марте 1990 (Volume 21); доступен также через ftp csvax.cs.caltech.edu, файл pub/p2c-1.20.tar.Z. ptoc - другой переводчик с Паскаля на Си, написан на Паскале (comp.sources.unix, Volume 10, поправки в vol. 13?) f2c - переводчик с фортрана на Си совместно разработанный Bell Labs, Bellcore, and Carnegie Mellon. Подробности можно получить, послав электронной почтой сообщение send index from f2c по адресу netlib@research.att.com или research!netlib. (Эти подробности можно получить и через ftp netlib.att.com, в директории netlib/f2c.) Составитель этого списка вопросов и ответов имеет список других коммерческих трансляторов, среди них трансляторы для менее известных языков. Правда ли, что C++ - надмножество Си. Можно ли использовать компилятор C++ для трансляции C программ? Си++ вырос из Си и в большой степени базируется на нем, но некоторые правильные конструкции Си недопустимы в C++. (Многие Си программы, будут, тем не менее, правильно транслироваться компилятором Си++). Мне нужен генератор перекрестных ссылок Си и C форматизатор Ищи программы, которые называются cflow, calls, cscope, cb, indent. Где найти все эти общедоступные программы? Если у вас есть доступ к Usenet, смотрите периодически помещаемые сообщения в comp.sources.unix и comp.sources.misc, которые описывают некоторые детали ведения архивов и подсказывают, как получить те или иные файлы. Обычно используется ftp и/или uucp c центральным, ориентированным на пользователей сервером, таким как uunet (ftp.uu.net, 192.48.96.9). Однако, в этих вопросах и ответах невозможно исследовать или перечислить все архивные серверы и рассказать о доступе к ним. Ай Ша (Ajay Shah) поддерживает список общедоступнгх программ в области численного анализа, который периодически публикуется, и его можно найти там же, где и данные вопросы и ответы. Группа Usenet comp.archives содержит многочисленные объявления о том, что доступно на различных ftp. Почтовый сервер archie может подсказать, на каком ftp имеются те или иные программы. Наконец, группа comp.sources.wanted - обычно самое подходящее место, где можно поместить соответствующий запрос, но посмотрите прежде их список вопросов и ответов (FAQ) Как найти источники . Почему недопустимы вложенные комментарии? Как прикажете выключить фрагмент программы, в котором уже есть комментарии? Можно ли использовать комментарии внутри стринговых констант? Вложенные комментарии принесут больше вреда, чем пользы, главным образом из-за возможности случайно не закрыть комментарий, оставив внутри него символы /* . По этой причине лучше выключить большой фрагмент программы, в котором уже есть комментарии, с помощью средств препроцессора #ifdef ии #if 0. Последовательность символов /* и */ не имеет специального значения внутри заключенных в двойные кавтчки стрингов. Эта последовательность не рассматривается как комментарий, поскольку программа (особенно та, которая создает текст другой Си программы) должна иметь возможность эти комментарии печатать. Как получить значение кода ASCII той или иной литеры, и наоборот? В Си литеры представлены целыми числами, соответствующими их значениям (в соответствии с набором символов данной машины). Так что нет необходимости в преобразовании: если известна литера, то известно и ее значение. Как реализовать последовательности и/или массивы бит? Используйте массивы переменных типа char или int и несколько макросов для операций с отдельными битами
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |