как встроенные функции раскрывают внутренние структуры данных? - PullRequest
0 голосов
/ 24 июня 2011

Я много раз слышал, что «встроенные функции в C раскрывают внутренние структуры данных», и это одна из причин, по которой некоторым людям они не нравятся.

Может кто-нибудь объяснить, как?

Заранее спасибо.

Допустим, у меня есть программа code.c и функция func (). Я могу 1) сделать функцию func () встроенной, что будет представлять все, что я делаю со своими структурами данных в code.c 2) я могу поместить функцию func () в библиотеку и предоставить ее как разделяемую библиотеку (которая не читается - я угадайте ??: p) ---- это правильный анализ?

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

Поскольку вы помещаете определения встроенных функций в заголовочный файл (если только он не используется в одном файле cpp), который должен быть включен потребителями, то, я думаю, вы раскрываете внутреннюю работу вашего кода.

Но, поскольку альтернативой обычно являются макросы, я сомневаюсь, что это веская причина против них.

1 голос
/ 24 июня 2011

Встроенные методы расширяют все вызовы методов на месте.Поэтому вместо того, чтобы foo () была инструкцией JMP или CALL, она просто копирует фактические инструкции foo (), где она была вызвана.Если они содержат критические данные, то они становятся доступными, хотя встроенные функции обычно используются для коротких одно-двухстрочных методов или больших выражений.

1 голос
/ 24 июня 2011

Это, безусловно, будет более прозрачным по сравнению с чем-то, скомпилированным в библиотеку или объектный модуль.Это потому, что вы можете видеть исходный код и, следовательно, писать код, который манипулирует структурами данных любым удобным для вас способом.

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

Существуют корпорации программного обеспечения, которые ревностно охраняют свой исходный код программного обеспечения и выпускают только объектные модули, с которыми можно связываться, или совместно используемые библиотеки, или (страшно!) .DLLs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...