Tag: 跨平台

stdin是否包含回车符(\ r)char?

在SO答案中我写了这段代码: char fail_on_eof (int c) { if (c == EOF) exit (EXIT_FAILURE); return (char) c; } void skip_to_next_line (void) { char c; do { c = fail_on_eof (getchar ()); } while (c != ‘\n’); } 我想知道是否有任何终端可以返回’\r’ (只要在行尾有一个’\n’ ,上面的代码就会覆盖它)。 stdin是否包含’\r’ (在任何平台上)? 输入重定向怎么样stdin总是在文本模式下工作?

无需组装即可检测CPUfunction

我一直在寻找确定CPU及其function的方法(例如SEE,SSE2等)。 但是,我发现的所有方法都使用cpuid指令来处理汇编代码。 鉴于在编译器甚至目标之间在c / c ++中进行汇编的不同方式(在VC下没有64位目标的内联汇编),id反而避免这种情况。 是否有一些简单的库或OSfunction(用于Windows和Linux)来获取此信息? 目前我只对使用x86和x86-64 CPU的平台感兴趣,而且我极力需要支持至少AMD和Intel。

Makefile和跨平台开发

我一直在试图弄清楚如何创建一个可以为所有主要操作系统编译的C程序。 我考虑过使用makefile,所以我只需要更改目标操作系统,但是我遇到了一些问题。 我的第一个问题是我无法弄清楚如何更改目标操作系统,因此我可以在一个操作系统上编译,但在所有操作系统上使用该应用程序。 我的第二个问题是我无法弄清楚如何让它自动编译src目录中的所有.c文件,所以每次添加新文件时我都不必修改makefile。 有谁知道怎么做这个东西? 我当前的makefile(目前尚未修改) CC=gcc CFLAGS=-c -Wall LDFLAGS= SOURCES=main.cpp hello.cpp factorial.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=hello all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ .cpp.o: $(CC) $(CFLAGS) $< -o $@q2

跨平台的方式来获取一天的时间?

有没有一种简单的方法可以获得适用于iOS,OSX,Linux和Windows的时间(17:30,01:20 ……等)? 如果没有Windows方式和posix方式或东西? 谢谢

检查系统是否实现了某个function

我正在创建一个跨系统的应用程序。 例如,它使用itoa函数,它在某些系统上实现,但不是全部。 如果我只是提供我自己的itoa实现: header.h:115:13: error: conflicting types for ‘itoa’ extern void itoa(int, char[]); In file included from header.h:2:0, from file.c:2:0, c:\path\to\mingw\include\stdlib.h:631:40: note: previous declaration of ‘itoa’ was here _CRTIMP __cdecl __MINGW_NOTHROW char* itoa (int, char*, int); 我知道我可以检查宏是否是预定义的,如果没有定义它们: #ifndef _SOME_MACRO #define _SOME_MACRO 45 #endif 有没有办法检查C函数是否已预先实现,如果没有,请实现它? 或者只是简单地实现一个function?

长长的对齐问题(MSVC与GCC)

我正在编写C跨平台库,但最终我的unit testing中出现错误,但仅限于Windows机器上。 我已经跟踪了这个问题并发现它与结构的对齐有关(我正在使用结构数组来保存多个类似对象的数据)。 问题是:memset(sizeof(struct))和设置结构成员逐个产生不同的字节到字节结果,因此memcmp()返回“不相等”的结果。 这里的代码为: #include #include typedef struct { long long a; int b; } S1; typedef struct { long a; int b; } S2; S1 s1, s2; int main() { printf(“%d %d\n”, sizeof(S1), sizeof(S2)); memset(&s1, 0xFF, sizeof(S1)); memset(&s2, 0x00, sizeof(S1)); s1.a = 0LL; s1.b = 0; if (0 == memcmp(&s1, &s2, sizeof(S1))) printf(“Equal\n”); […]

Linux中的蓝牙编程 – 交叉编译问题

我安装了 sudo apt-get install libbluetooth-dev 在我的环境中拥有蓝牙套件。 因此,使用以下命令可以使用gcc成功编译蓝牙代码。 gcc -o bt bt.c -lbluetooth 但是,当我尝试使用交叉编译器来编译源代码时 $CC -o bt2 bt.c -lbluetooth 我得到了致命的错误: fatal error: bluetooth/bluetooth.h: No such file or directory compilation terminated 有什么我做错了或者我需要将这个库链接到这个交叉编译器吗? 谢谢

glib gunichar和wchar_t之间有什么区别,哪个更适合跨平台解决方案?

我正在尝试编写一些只在用户拥有gcc可移植的C代码,并安装了glib 。 从我的所有研究中,我发现使用gcc , wchar_t总是被定义为4个字节,而使用glib , gunichar也是4个字节。 我没想到的是,如果像gunichar , wchar_t也被编码为UCS4。 是这样的吗? 如果是这样,我应该能够简单地将gunichar*转换为wchar_t*并使用stdc wcs*函数,对吧?

任何C / C ++到非本地字节码编译器/解释器?

正如标题所示,是否有任何C / C ++字节码编译器/解释器? 我正在用一种解释语言编写应用程序,该语言依赖于某些完全可交叉编译的库(在编译某个平台时没有特殊的标志来指示代码更改)但是用C和C ++编写。 不是在每个平台上运送n-platform-specific-libs,而是运送一组由一个平台特定的解释器解释的lib。 可能和/或可用? EDIT1:有问题的解释语言是Python,虽然我也可以使用Ruby。

是否有适用于C语言的跨平台GUI库?

可能重复: 用于GUI应用程序的跨平台C库? 是否有适用于C语言的跨平台GUI库? (我的意思是至少赢得mac lin)如果有任何类似XML的GUI编辑模型,那么任何GUI编辑跨平台的可视化程序都会受到质疑!)