c11

    4热度

    2回答

    我想在FreeBSD 10.1版本使用原子能的C铿锵3.6.1,但是当我尝试编译在atomic_flag变量使用ATOMIC_FLAG_INIT程序在struct我初始化一个原子标志获得error: expected expression。 这是我正在编译的程序。 #include <stdio.h> #include <stdatomic.h> struct map { at

    1热度

    1回答

    这是一个熟悉的事实,在C中,您可以编写"a" "b"并获得"ab"。这是在标准C11讨论: 在翻译阶段6中,由相邻的字符和相同前缀字符串文字记号中的任何序列中指定的多字节字符序列被连接成一个单一的多字节字符序列。 短语“字符和...”似乎暗示你可以通过编写'a' "b"得到相同的结果,但我从来没有碰到过这种使用和GCC和Microsoft编译器都拒绝它。我错过了什么吗?

    2热度

    1回答

    我通常不需要帮助来理解错误信息,但是这个看起来好像是必须的错误。我已经梳理了“可能已经有答案的问题”,但似乎没有一个使用C11最近添加的功能_Generic,所以我认为这可能是一个独特的问题。这里是我的测试用例: #include <stdio.h> #define foo(bar) _Generic((bar), int: sizeof (bar) \ , int *:

    7热度

    3回答

    我想在C11使用_Generic宏来生成重载函数,我已经停在零个参数功能的支持,如: #define msg(_1) _Generic((_1), char*: msg_string, default: msg_none)(_1) char* msg_none(void){ return moo_string("Have a nice day!"); } char* msg_s

    0热度

    1回答

    gets_s()函数在我的编译器上不起作用。我正在使用GCC的代码块。 这是错误: undefined reference to '_imp_gets_s. 谁能告诉我如何解决这个错误。

    1热度

    2回答

    使用c11 _Generic有没有办法将多个类型映射为单个值? 如: _Generic(e, \ A *: foo_expression, \ B **: foo_expression, \ C: foo_expression, \ enum D: bar_expression, \ void *: bar_expression) 有没有办

    2热度

    2回答

    为了简化我的代码,我把下面的代码片段来解释我的问题: def.h #ifndef _DEF_H_ #define _DEF_H_ const char draw[] = "Draw on the canvas:" #endif circle.c #include "def.h" void draw_circle(void) { printf("%s %s", draw,

    4热度

    2回答

    我有一个程序有两个与共享内存进行通信的进程。在ctrl-c我希望这两个进程退出。我使用一个名为stop的变量atomic_bool来通知进程保持循环或在设置为true时退出。但是,当atomic_bool变量停止设置为true时,其他进程看不到更改。意思是它仍然打印出0而不是1,但是进行更改的过程显示为1.那么,为什么第二个过程看不到从假到真的变化? Control-c将不能用于查杀进程,所以请改

    8热度

    2回答

    一个有效的定义的C11标准声明: 5.1.2.2.1计划启动 称为在程序启动的功能被命名为主力。该实现没有声明这个函数的原型。它应具有的int返回类型和不带参数进行定义: int main(void) { /* ... */ } 或两个参数(这里称为argc和argv,虽然任何名称都可以使用,因为它们是本地的功能它们被声明): int main(int argc, char *argv[])

    3热度

    2回答

    有点愚蠢的问题。例如我读过,在C11中增加了对线程的支持。 然后,例如我的STM32F4的GCC编译器就说它支持C11标准。 那么,现在是否意味着没有OS,我会实现线程支持?但它可能是怎样的? 另一个例子 - 克++为STM32支持的std ::矢量,它工作,即使没有OS存储器管理。 这意味着一些内存管理器是在内部编译器?或不?