Можно ли переопределить {и} в C? - PullRequest
2 голосов
/ 22 июля 2010

Есть ли способ сделать что-то вроде ...

#define {  { printf("%s,%s",_FUNCTION_, _LINE_); { 

, это не скомпилируется.Но мне интересно, есть ли какая-то хитрость, чтобы эффективно получить такую ​​же функциональность?(кроме написания инструмента для подключения на этапе предварительной обработки)

Смысл этого состоит в размышлениях о том, как получить плохое покрытие кода.

Ответы [ 4 ]

7 голосов
/ 22 июля 2010

Это, конечно, невозможно с макросом.Имя макроса должно быть идентификатором.Символы скобок - это знаки препинания, а не идентификаторы.

1 голос
/ 22 июля 2010

Получите охват кода богатого человека с помощью инструментов, обсуждаемых в этих вопросах , в частности gcov , который является частью GCC.

1 голос
/ 22 июля 2010

Я видел, как это сделано (не то, чтобы я одобрил это ...) с #define BEGIN ... и #define END ....

, например

void foo(void)
BEGIN
    stuff();
END
0 голосов
/ 22 июля 2010

Вы не можете изменить способ, которым компилятор интерпретирует {}.Предполагается, что они позволяют синтаксически определять, верен ли код и что он должен делать.

Если вы действительно хотите сделать что-то подобное, я предлагаю выполнить поиск и замену для "{" "{MY_MACRO;"

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