В настоящее время я пишу проект C, который включает отдельную тестовую сборку.
Тесты - это разные C процессы, которые используют исходный код для проверки каждой определенной функции в моем коде (TDD).
Я хочу, чтобы в этих тестах было исправление обезьян. Мне потребовалось некоторое время, чтобы посмотреть, что это можно сделать, и я думаю, что самый простой вариант - использовать функцию атрибута g cc: https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
Для тестовой сборки я бы хотел все мои функции будут слабыми (IE, я хочу такой же эффект, как если бы я написал __attribute__ (( weak))
перед любым объявлением функции моего C файла.)
Я бы хотел знать, есть ли способ передать этот слабый атрибут по умолчанию по умолчанию в качестве опции компиляции, а не делать это вручную каждый раз, когда мне это нужно. Прямо сейчас я использую макрос, который проверяет, тестируется ли сборка, и если да, добавьте эту строку перед каждой функцией, которую я хочу. Я бы предпочел не усложнять исходный код только для того, чтобы разрешить некоторые тестовые функции.
Эта topi c в Google загрязнена повторением одного и того же тривиального использования атрибута, но я не могу найти какой-либо способ Установка атрибута по умолчанию.
Однако я нашел эту книгу https://link.springer.com/chapter/10.1007%2F978-1-4302-0704-7_4, которая может содержать решение, но я не буду платить 30 баксов только в надежде на это. Поэтому здесь я задаю вопрос.
Некоторые могут подумать, что это плохая идея, но в моем сценарии это нормально, я думаю. Помните, что мой набор тестов состоит из множества моно C файлов, связанных с моим кодом, и помните, что новая опция сборки теста не повлияет на нормальную сборку.