c11

    4热度

    1回答

    C11指定6.7节,其声明也定义: 的标识符的定义是该标识符的声明: - 为一个对象,使存储到该对象保留; [...] 我没有找到一个全面的列表,它的对象声明导致存储被保留。直觉上我很清楚,但我无法从C11标准中获取这些信息。

    3热度

    2回答

    在下面的代码中,我声明了一个结构成员变量作为结构名称的同名。 struct st { int st; }; int main() { struct st t; t.st = 7; return 0; } 我不知道,它的工作罚款GCC编译器并没有给出冲突错误。 所以, 编译器如何知道结构名和变量名? 编译器内部使用什么机制?

    2热度

    3回答

    我看到this way在C11中实现某种struct继承与匿名struct,并且想试用它。以下是我有:从GCC struct struct_a { int aa; }; struct struct_b { struct struct_a; int bb; }; int main(void) { volatile struct struct_b

    2热度

    1回答

    我特别寻找C11标准(ISO/IEC 9899:2011)或POSIX页面中的单词。我检查了POSIX manual for fwrite,但它没有提及未定义的行为。然而,manual for fclose不说, ,来电后FCLOSE(),不确定的行为的任何使用流导致的。 但我仍然看不到NULL流是否会导致UB。

    3热度

    3回答

    为什么int16_t complex不能编译,而在x86和x86_64机器上的int16_t,是short int上的typedef?以下是使用C99和C11标准对gcc 5.4和4.9进行测试的示例代码。编译器抱怨在声明说明符中有两个或多个数据类型。 代码: #include <complex.h> #include <stdint.h> #include <stdio.h> int m

    0热度

    1回答

    如果我初始化这样的变量: static int i = 2 * 2/0; 然后,编译器给我一个错误。 prog.c: In function 'main': prog.c:5:23: warning: division by zero [-Wdiv-by-zero] static int i = 2 * 2/0; ^ prog.c:5:17: error: ini

    0热度

    1回答

    编辑问题是:“‘strnlen’的功能隐式声明”:我怎么删除警告/EDIT 编译(特殊切下的测试只有一个的#include) #include <string.h> void DeleteMe(){ const char* pC = "ABC"; int nLen = strnlen(pC, 255); char buffer[256]; strncpy(

    5热度

    1回答

    作为比较操作数的结构不可用是C中更明显的事情之一,对我来说没有太大意义。结构可以按值传递并通过赋值复制,但==未指定。 以下是C11标准(草案)的相关部分,它们定义了等号运算符(==和!=)和简单赋值运算符(=)的约束条件。请注意在平等运营商的限制下缺乏结构和联盟。 (除了缺少处理_Atomic C99的措辞是相同的)。 6.5.9公平运营商 约束 下列情况之一的应持有: 两个操作数的算术类型;

    0热度

    1回答

    在一个C++项目中,我使用了包含一些C11头文件的C库。它不会与GCC编译。看到这个简单的代码: // main.cc #include <stdatomic.h> int main() { return 0; } 运行gcc main.cc -lstdc++,它抱怨:error: ‘_Atomic’ does not name a type。然而,clang main.c

    4热度

    1回答

    我试图重载函数与C11 _Generic宏是这样的: int isPrim_int (int num); int isPrim_lint (long int num); int isPrim_llint (long long int num); #define isPrim(_1, ...) _Generic((_1), \ int: isPrim