Меня особенно интересует LLVM 4.1, но меня также интересует поведение других компиляторов.
Согласно документации GCC (которую LLVM поддерживает как минимум частично) атрибут unused
ведет себя следующим образом:
This attribute, attached to a variable, means that the variable is meant to be possibly unused. GCC will not produce a warning for this variable.
Однако, если компилятор может предупредить вас о неиспользуемых параметрах и переменных, предположительно, он уже знает, какие параметры и переменные не используются, и вам не нужно сообщать ему об этом (тем более, что атрибут unused
указывает только на то, что переменная возможно em> не используется). Следовательно, позволяет ли атрибут unused
компилятору выполнять какие-либо дополнительные оптимизации, или его цель состоит только в том, чтобы обеспечить более читаемый код? Кроме того, если атрибут unused
на самом деле позволяет компилятору выполнять дополнительные оптимизации, что произойдет, если вы на самом деле в конечном итоге используете параметр или переменную, которая была указана как unused
? LLVM (в XCode), похоже, не жаловался на этот случай, хотя, возможно, я компилировал не на правильном уровне оптимизации или с включенными правильными предупреждениями.