Articles of c99

O padrão C considera que há um ou dois tipos ‘struct uperms_entry’ neste header?

Você pode dar capítulo e verso de um dos três padrões C (preferencialmente C99 ou C11) que indica se o seguinte arquivo de header tem um ou dois tipos de struct uperms_entry nele? #ifndef UPERMS_CACHE_INCLUDE #define UPERMS_CACHE_INCLUDE typedef struct mutex MT_MUTEX; typedef struct uperms_cache { MT_MUTEX *cache_lock; int processing; struct uperms_entry *uperms_list; // No prior […]

O ANSI C ou o ISO C especificam o que -5% 10 deve ser?

Eu pareço lembrar que o ANSI C não especificou qual valor deve ser retornado quando um operando de um operador de módulo for negativo (apenas que ele deve ser consistente). Será que isso foi especificado mais tarde ou sempre foi especificado e estou me lembrando incorretamente?

Faixa de valor de retorno da function principal

O que o padrão diz sobre os principais valores de retorno? Diga apenas até 255? Porque int main(void){ return 256; } echo $? ; # out 0

Tipo de dados booleano C99?

Qual é o tipo de dados booleano C99 e como usá-lo?

Alternativa padrão para o truque ## __ VA_ARGS__ do GCC?

Existe um problema bem conhecido com argumentos vazios para macros variadic em C99. exemplo: #define FOO(…) printf(__VA_ARGS__) #define BAR(fmt, …) printf(fmt, __VA_ARGS__) FOO(“this works fine”); BAR(“this breaks!”); O uso de BAR() acima está de fato incorreto de acordo com o padrão C99, já que ele se expandirá para: printf(“this breaks!”,); Observe a vírgula à direita […]

O que significa ponto (.) Em um inicializador struct?

static struct fuse_oprations hello_oper = { .getattr = hello_getattr, .readdir = hello_readdir, .open = hello_open, .read = hello_read, }; Eu não entendo bem essa syntax C. Não consigo nem pesquisar porque não sei o nome da syntax. O que é isso?

bool para conversão int

Quão portável é essa conversão. Posso ter certeza de que ambas as asserções são aprovadas? int x = 45; assert(x==0); Não pergunte por quê. Eu sei que isso é feio. Obrigado.

É possível iterar sobre argumentos em macros variadicas?

Eu queria saber se é possível iterar sobre argumentos passados ​​para uma macro variadic em C99 ou usando qualquer extensão GCC? Por exemplo, é possível escrever uma macro genérica que usa uma estrutura e seus campos como argumentos e imprime o deslocamento de cada campo dentro da estrutura? Algo assim: struct a { int a; […]

Por que o C ++ 11 não suporta listas de inicializadores designadas como C99?

Considerar: struct Person { int height; int weight; int age; }; int main() { Person p { .age = 18 }; } O código acima é legal em C99, mas não é legal em C ++ 11. Qual é a razão pela qual o C ++ 11 não suporta um recurso tão prático?

Definições provisórias em C99 e vinculação

Considere o programa C composto de dois arquivos, f1.c: int x; f2.c: int x=2; Minha leitura do parágrafo 6.9.2 da norma C99 é que esse programa deve ser rejeitado. Na minha interpretação de 6.9.2, a variável x é provisoriamente definida em f1.c , mas essa definição provisória se torna uma definição real no final da […]