Tag: 编译器构造

如何在二进制代码中查找函数边界

我看到二进制翻译通常是基于跟踪的。 是因为人们无法获得function的界限吗? 二进制代码中是否有函数标签?

是否可以在Java中为C程序打印出诊断信息?

我想从java程序编译以下C代码(故意留下语法错误): /* Hello World program */ #include main() { printf(“Hello World”) } 我希望我的java程序编译C文件并在控制台中提供诊断。 示例:第4行; 预期和第5行无效的语法… 我已经安装了CodeBlock MinGW编译器,并且能够编译代码并打印出错误。 看看我做了什么: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class C_Compile { public static void main(String args[]){ String ret = compile(); System.out.println(ret); } public static String compile() { String log=””; String myDirectory = “C:\\”; try { String s= null; […]

如何更改VS的编译器?

我正在使用VS 2010.我已经更改了编译器C代码而不是C ++的设置。 它工作正常,但问题是MS编译器不支持C99标准,因此我正在寻找一个可以与VS 10一起使用的C编译器。如何做到这一点? 提前致谢。

我可以在1 C ++项目中混合使用c和cpp文件吗?

我还是初学者,我正在使用eclipse。 我有一个项目,其中混合了c文件和cpp文件。 链接器向我抛出错误: undefined reference to 将所有*.c文件重命名为*.cpp ,错误消失。 所以我不能混合这些文件或这是一些编译器/链接器选项问题? 我的选择: GCC C ++编译器: -I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I”/myPath” -O0 -g3 \ -Wall -c -fmessage-length=0 `pkg-config –cflags glib-2.0 gtk+-2.0 GCC C编译器: -I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I”/myPath” -O0 -g3 \ -Wall -c -fmessage-length=0 -std=c99 `pkg-config –cflags glib-2.0 gtk+-2.0` GCC C ++链接器: -L/usr/include/glib-2.0/glib `pkg-config –libs gtk+-2.0` 好吧,因为它说的是C ++ Linker,这是否意味着c文件中的目标文件无法链接到项目中(默认情况下)?

yylineno在yacc文件中始终具有相同的值

对于编译器中的一个项目,我在语法分析器中有一个问题,当我在符号表中添加一个符号时,我在yylineno中总是采用相同的值… 我是在开始时这样做的: %{ int yylex(void); int yyerror(char* yaccProvidedMessage); extern int yylineno; //i declare yylineno from the lexical analyzer extern char *yytext; extern FILE *yyin; int scope=0; int max_scope; %} 当我在符号表中添加内容时,在语法中: 即 lvalue: ID { printf(“<-ID"); add_data_to_symbol_table((char*)($1),scope,yylineno); printf("lineNO:%d",yylineno); } ; 在输出中,当我给出不同行的输入时,它不识别新行 if(x<=2) { if(t<1) { k=2; } } lineNO永远不会改变,总是有1作为价值…… 有任何想法吗?

MinGW Compiler for Windows,使用GCC,C99和GNU99

我正在使用适用于Windows的MinGW编译器。 我在C中制作了一些程序。我读到的大部分文章似乎都已经过时了…最后我读到C99在GCC中是不完整的,这仍然是真的吗? 我真正的问题是设置C99和GNU99之间的跨平台兼容性……我应该避免使用GNU99设置和它的扩展,只是坚持使用C99? 我是这个MinGW编译器集的新手,因为我一直使用Visual Studio并决定尝试新的东西……现在我正在使用这些设置编译… -march=native -O3 -std=gnu99 我是否应该为制作C程序以及使用此编译器制作C ++程序而输入任何推荐的编译器命令? 我想制作一个与Windows,Mac和Linux兼容的简单程序,但首先是大多数Windows。

用于php的独立语法和解析器

我正在寻找一个现成的PHP语法和解析器(至少5.2),理想情况下是一个实用程序/库,可以将PHP代码解析为可读的AST,例如xml。 解析器本身不必用php编写,源语言并不重要。

如何使用Turbo C ++编译器在Notepad ++中编译和调试C ++

我在notepad ++中安装了NppExecute插件。 我无法弄清楚在Notepad ++中编译和调试C,C ++程序的下一步。 系统详细信息:(a)Turbo C目录C:\ TC(b)OS Windows 7 请提供有关如何设置环境变量和脚本以进行编译和调试的完整详细信息。

没有与GCC的内存对齐

我正在处理一些分组数据。 我创建了用于保存数据包数据的结构。 这些结构是由python为特定的网络协议生成的。 问题在于,由于编译器对齐结构这一事实,当我通过网络协议发送数据时,消息最终会比我想要的更长。 这会导致其他设备无法识别该命令。 有没有人知道可以解决这个问题,这样我的打包器的大小应该是结构应该的大小,还是有办法可以关闭内存对齐?

实模式内核的16位C代码

我不知道如何为16位实模式编译我的C内核。 我试过各种编译器但没有运气。 我的引导加载程序只是从软盘(我的内核就在磁盘上的第一个扇区之后)加载原始扇区到物理内存地址1000h:0000h然后跳转到它。 如何编译我的C内核以16位实模式工作? 我的基本内核: void OSmain() { unsigned char *videoram = (unsigned char *) 0xb8000; videoram[0] = 65; /* character ‘A’ */ videoram[1] = 0x07; /* forground, background color. */ while( 0 ) { } } 我尝试过的编译器是GCC,tinyCC和DMC。 我的目标是得到一个平坦的二进制文件,我可以跳转到开始执行。