有没有C编程语言的设计工具?
请注意,我使用C而不是C++,我想使用类似StarUML的设计工具,但似乎UML不是C的好方法,因为C不是面向对象的语言.
设计基于C的应用程序和库的最佳方法是什么?
谢谢.
Windows上可以使用.NET Framework中的Platform Invokation.
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern MessageBoxResult MessageBox(IntPtr hWnd, String text, String caption, int options);
Run Code Online (Sandbox Code Playgroud)
PInvoke是否可在Linux和Mac OS X平台上使用?例如Mono项目?
如果Linux和Mac OS X支持PInvoke,您能否在答案中给我一些示例或参考.
谢谢.
我想在 Linux 中开发一个应用程序。我想使用 wstring 因为我的应用程序应该支持 unicode 并且我不想使用 UTF-8 字符串。
在 Windows 操作系统中,使用 wstring 很容易。因为任何 ANSI API 都有一个 unicode 形式。例如有两个 CreateProcess API,第一个 API 是 CreateProcessA,第二个 API 是 CreateProcessW。
wstring app = L"C:\\test.exe";
CreateProcess
(
app.c_str(), // EASY!
....
);
Run Code Online (Sandbox Code Playgroud)
但是在 Linux 中使用 wstring 似乎很复杂!例如,Linux 中有一个名为parport_open的 API (这只是一个示例)。
而且我不知道如何将我的 wstring 发送到这个 API(或者像 parport_open 这样接受字符串参数的 API)。
wstring name = L"myname";
parport_open
(
0, // or a valid number. It is not important in this question.
name.c_str(), // Error: because type of …Run Code Online (Sandbox Code Playgroud) 如何将托管对象发送到本机函数以使用它?
void managed_function()
{
Object^ obj = gcnew Object();
void* ptr = obj ??? // How to convert Managed object to void*?
unmanaged_function(ptr);
}
// The parameter type should be void* and I can not change the type.
// This function is native but it uses managed object. Because type of ptr could not be
// Object^ I called it "Unmanaged Function".
void unmanaged_function(void* ptr)
{
Object^ obj = ptr ??? // How to convert void* to Managed object?
obj->SomeManagedMethods(); …Run Code Online (Sandbox Code Playgroud) 我开发了一个开源应用程序。我的项目的目录结构是:
app
|-include
|-src
|-doc
|-build
|-lib
|-bin
Run Code Online (Sandbox Code Playgroud)
我想使用另一个开源库。有一些选择:
include和src目录中。include和lib目录。third_party目录,并在其中添加第三方库的完整源代码。third_party目录并将第三方库的编译添加到其中。什么是最好的选择?有没有更好的方法来管理使用第三方开源库的项目的目录结构?
我想在Windows中编译这个源代码(这只是一个例子):
start:
NOP
NOP
Run Code Online (Sandbox Code Playgroud)
当我用NASM或FASM编译它时,输出文件长度是2个字节.但是当我用GNU汇编程序(as)编译它时,输出文件长度是292字节!
如何使用GNU汇编程序(as)将程序集文件编译为原始二进制文件(如DOS .com)格式?
为什么我这样做?
我想编写自己的简单操作系统,用C编写代码(不使用任何C标准库,甚至是stdio.h或math.h)并将其转换为汇编:
gcc -S my_os.c -o my_os.asm -masm=intel
Run Code Online (Sandbox Code Playgroud)
然后,我将汇编文件编译为原始二进制文件:
as my_os.asm
Run Code Online (Sandbox Code Playgroud)
然后我重命名a.out(汇编程序的输出)到my_os.flp最后用VMWare启动我的操作系统:)
是否可以使用XHTML(或HTML),CSS和JavaScript编写跨平台的桌面应用程序?
如果答案是肯定的,那么如何运行这个应用程序?我应该使用像Firefox这样的浏览器来运行吗?
注意:目前Windows支持HTML应用程序.
并struct用单一构件具有相同的性能作为成员类型(存储器使用和速度)?
示例:
此代码是一个struct成员:
struct my_int
{
int value;
};
Run Code Online (Sandbox Code Playgroud)
性能是my_int一样的int吗?
注意,一般来说,double不同于long double.
strtod将字符串转换为double,但应该使用哪个函数将字符串转换为long double?
通过for计算完成百分比很容易:
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
// Do somethings...
Console.WriteLine("{0}% Done!", i * 10 + j + 1);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
1% Done!
2% Done!
3% Done!
4% Done!
5% Done!
6% Done!
7% Done!
8% Done!
9% Done!
10% Done!
11% Done!
12% Done!
13% Done!
...
93% Done!
94% Done!
95% Done!
96% Done!
97% Done!
98% Done!
99% Done!
100% …Run Code Online (Sandbox Code Playgroud) c ×3
.net ×2
c# ×2
c++ ×2
linux ×2
assembly ×1
binutils ×1
c++-cli ×1
console ×1
css ×1
for-loop ×1
javascript ×1
long-double ×1
macos ×1
managed ×1
member ×1
mixed-mode ×1
open-source ×1
parallel.for ×1
parsing ×1
performance ×1
pinvoke ×1
struct ×1
unmanaged ×1
wstring ×1
xhtml ×1