Articles of macros

Macro de tamanho de matriz que rejeita pointers

A macro padrão de tamanho de matriz que é frequentemente ensinada é #define ARRAYSIZE(arr) (sizeof(arr) / sizeof(arr[0])) ou alguma formação equivalente. No entanto, esse tipo de coisa sucede silenciosamente quando um ponteiro é passado e fornece resultados que podem parecer plausíveis em tempo de execução até que as coisas desmoronem misteriosamente. É muito fácil cometer […]

O que é “: – !!” no código C?

Eu esbarrei neste estranho código de macro em /usr/include/linux/kernel.h : /* Force a compilation error if condition is true, but also produce a result (of value 0 and type size_t), so the expression can be used eg in a structure initializer (or where-ever else comma expressions aren’t permitted). */ #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) […]

Foreach macro em argumentos de macros

Gostaria de saber se é possível escrever uma macro para cada um dos argumentos das macros. Aqui está o que você quer fazer: #define PRINT(a) printf(#a”: %d”, a) #define PRINT_ALL(…) ? ? ? THE PROBLEM ? ? ? E possível uso: int a = 1, b = 3, d = 0; PRINT_ALL(a,b,d); Aqui está o […]

Existe uma macro __CLASS__ em C ++?

Existe uma macro __CLASS__ em C ++ que fornece o nome da class semelhante à macro __FUNCTION__ que fornece o nome da function

O que faz a macro Q_OBJECT? Por que todos os objects do Qt precisam dessa macro?

Acabei de começar a usar o Qt e notei que todas as definições de class de exemplo têm a macro Q_OBJECT como a primeira linha. Qual é o objective dessa macro de pré-processador?

C ++ – enum vs. const vs. #define

No final do artigo aqui: http://www.learncpp.com/cpp-tutorial/45-enumerated-types/ , ele menciona o seguinte: Finalmente, como acontece com as variables ​​constantes, os tipos enumerados aparecem no depurador, tornando-os mais úteis do que os valores #definidos nesse aspecto . Como a frase em negrito acima é alcançada? Obrigado.

Quando citar variables?

Eu estou escrevendo macros CMake pela primeira vez, e eu tenho dificuldade em entender como as variables ​​funcionam. Mais especificamente, ${a} parece ter um significado diferente de “${a}” . Por exemplo aqui: Passando uma lista para uma macro cmake Não consigo entender quando devo adicionar citações e quais são os maiores princípios subjacentes.

parameters opcionais com macros C ++

Existe alguma maneira de obter parâmetros opcionais com Macros C ++? Algum tipo de sobrecarga também seria bom.

Posso gravar / reproduzir macros no Visual Studio 2012/2013/2015/2017?

Aparentemente, as macros foram descartadas do Visual Studio 2012. Existe um plugin / extensão / ferramenta que me permitirá gravar e reproduzir macros de teclado (muito parecido com a macro temporária de gravação / reprodução no Visual Studio 2010)? Por exemplo, normalmente usaria uma macro ao converter código de um idioma para outro ou para […]

Macros C e uso de argumentos entre parênteses

Exemplo #define Echo(a) a #define Echo(a) (a) Eu percebo que provavelmente não há uma diferença significativa aqui, mas por que você iria querer include o dentro dos parênteses dentro do corpo macro? Como isso altera isso?