我正在开发一个简单的C应用程序,我想创建一个DSL来定义该应用程序的一些行为。我们的想法是创建一种非常干净的语言,类似于Ruby,但实际上是在C中运行的。所有的函数都是用C定义的,DSL只是...好吧,一个用来“隐藏”C语言冗长语法的别名。
我知道lex和yacc,但我认为对于我正在尝试做的事情来说,它们有点过头了。有没有更简单的东西?我考虑过正则表达式,但这样做会让我觉得很脏。也许还有更好的!
举个例子:
if a = b
myFunctionInC()
get 'mydata' then
puts 'Hello!'
很容易转化为:
if (
我仍然是C#的新手,我想知道哪些元素是C#独有的,哪些元素是.Net框架独有的。
关键字、运算符、编译器、编译器错误和预处理器指令是C#本身的唯一成员吗?C#是否还有其他成员,或者之前的一些成员是否属于.Net框架?
此外,在控制台应用程序中,下列命名空间是否用于包含.Net框架成员?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
我有一些带有循环的C代码:
for(int i=0; i<1000; i+=ceil(sqrt(i)))
{
do stuff that could benefit from loop unrolling;
}
我打算使用宏命令告诉GCC展开循环,但我想确保在这种情况下它确实会展开循环(因为增量不是1,但它仍然可以预处理和展开)。
可以让GCC在经过优化后输出包含代码的.C文件吗?(希望包括在程序集级优化之前使用-O进行的任何优化)?
我知道我可以使用程序集输出来确认这一点,但我更希望在C中看到一些东西--对我来说,阅读和理解起来要容易得多。
当我开始学习如何测试一个程序时,我学到的就是用与测试程序相同的语言使用一个库或包。例如,
- if a tested program is written in Python, its testing program is also written in Python and uses `UnitTest` class in the python standard library
- if a tested program is written in C++, its testing program is also written in C++ and uses some test