Tag: g ++

g ++没有gcc吗?

没有GCC或G ++的G ++编译只是翻译//包括旧的g ++版本。 当我试图从源代码安装g ++我看到文件 gcc.c /* Default prefixes to attach to command names. */ #ifndef STANDARD_EXEC_PREFIX #define STANDARD_EXEC_PREFIX “/usr/local/lib/gcc-” #endif /* !defined STANDARD_EXEC_PREFIX */ //来自g ++ 1.4 * 我知道c ++是c类,我只是想知道g ++是否可以在没有gcc的情况下编译c ++。

如何在GCC中使用优化构建发布模式?

在GCC中进行全面优化的“发布模式”中需要构建哪些具体选项? 如果有多个选项,请列出所有选项。 谢谢。

C程序的gcc和g ++之间的性能差异

让我说我用C编写了一个程序并用gcc和g ++编译它,编译运行得更快? gcc还是g ++? 我认为g ++编译会使它变慢,但不确定。 让我再次澄清我的问题,因为有关gcc的说法。 假设我在控制台上编译这样的程序。 gcc ac g++ ac 哪个a.out运行得更快?

使用gcc,g ++和gdb在Window 7上为C / C ++调试设置VSCode

我在这里遵循指示。 安装了cpptools。 使用以下内容创建tasks.json : { “version”: “0.1.0”, “command”: “g++”, “isShellCommand”: true, “showOutput”: “always”, “args”: [“-g”, “helloworld.c”] } 并且launch.json包含以下内容: { “version”: “0.2.0”, “configurations”: [ { “name”: “C++ Launch (Windows)”, “type”: “cppvsdbg”, “request”: “launch”, “program”: “${workspaceRoot}/a.exe”, “args”: [], “stopAtEntry”: false, “cwd”: “${workspaceRoot}”, “environment”: [], “externalConsole”: false, “windows”: { “MIMode” : “gdb”, “miDebuggerPath”: “C:\\Mahesh\\Program Files\\mingw\\MinGW\\bin\\gdb.exe” } }, { […]

这是一个合法的C ++代码吗?

代码来自这里 鉴于在C ++中您可以使用C库,您会说下面的代码是合法的C ++代码吗? 如果没有,需要应用哪些更改? 此代码使用g ++编译并按预期运行。 更新:谢谢你的所有答案。 我仍然有点困惑,因为没有就此代码是否符合C ++标准达成一致。 会问另一个问题以消除我的怀疑 更新2:关闭此问题的版主:刚刚注意到问题已经结束,我觉得这很荒谬。 这是一个脚踏实地的技术问题,我收到了脚踏实地的技术答案。如果你还没有完全阅读整个主题,这里是我们已经同意的结论的直观表示: 显然,C ++不是C的超集。 解决与编码标准有关的问题是错误的。 客户: #include #include #include #include #include #include #include #include #include #include #define PORT “3490” // the port client will be connecting to #define MAXDATASIZE 100 // max number of bytes we can get at once // get sockaddr, IPv4 […]

C和C ++中寄存器变量的地址

我知道寄存器变量的概念和它的用例,但根据我的尝试,我脑子里几乎没有问题。 我无法访问C中的寄存器变量的地址,虽然我可以做C ++! 为什么? 访问寄存器变量的寻址有什么问题吗? 假设我在C ++中声明一个字符串变量作为寄存器,那么该变量将存储在哪里? 将C ++中的’string’等非数字数据类型的存储类声明为寄存器有什么意义? 更新:我认为C ++允许我们获取寄存器变量的地址,因为我的程序中没有出现任何错误,如下所示: #include #include using namespace std; clock_t beg, en; int main(){ int j, k=0; beg=clock(); for(register int i=0;i<10000000;i++){ /*if(k==0){ cout<<&i<<endl; // if this code is uncommented, then C++ rejects the recommendation to make 'i' as register k++; }*/ } en=clock(); cout<<en-beg<<endl; cout<<&j<<endl<<&k; return 0; } […]

如何让gcc为所有符号名称添加前缀

我知道在过去有一个选项-fprefix-function-name可以为所有生成的符号添加前缀,它似乎不再是gcc的一部分。 有没有其他方法可以做到这一点?

在不同优化级别以gcc / g ++访问本地变量和全局变量的速度

我发现gcc中的不同编译器优化级别在循环中访问本地或全局变量时会产生完全不同的结果。 这让我感到惊讶的原因是,如果访问一种类型的变量比访问另一种变量更可优化,我认为gcc优化会利用这一事实。 这里有两个例子(在C ++中,但它们的C对应物实际上给出了相同的时间): global = 0; for (int i = 0; i < SIZE; i++) global++; 它使用全局变量long global ,vs. long tmp = 0; for (int i = 0; i < SIZE; i++) tmp++; global = tmp; 在优化级别-O0,时间基本相等(如我所料),在-O1它稍快但仍然相等,但是从-O2使用全局变量的版本要快得多(大约7倍)。 另一方面,在下面的代码片段中,起始点指向大小为SIZE的字节块: global = 0; for (const char* p = start; p < start + SIZE; p++) global […]

C库未使用gcc / g ++进行链接

我有一个我在gcc中使用的c库。 该库具有扩展名.lib,但始终链接为静态库。 如果我编写一个使用该库作为c代码的程序,那么一切都可以。 但是,如果我将文件重命名为.cpp(在c / c ++中执行简单的操作),我会得到未定义的引用。 这些是我为测试目的编写的简单小程序,所以没有花哨的东西。 我编译使用: gcc -g -Wall -I -o program main.c customlibrary.lib -lm -lpthread 以上作品就像一个魅力。 然而: g++ -g -Wall -I -o program main.cpp customlibrary.lib -lm -lpthread 要么 gcc -g -Wall -I -o program main.cpp customlibrary.lib -lm -lpthread -lstdc++ 导致对customlibrary.lib中任何函数的未定义引用。 我尝试创建一个名为customlibrary.a的符号链接,但没有运气。 为什么g ++不会识别我的库。 不幸的是我无法访问库的源代码,但是将c-lib链接到c ++应该不是问题吧?

覆盖静态库中定义的C函数

我有一个C文件的静态库,在Cygwin上用g ++编译。 我希望unit testing库中定义的一个函数。 该函数调用该库中定义的另一个函数,我希望覆盖依赖项以将其替换为我自己的该函数版本。 我无法修改静态库中的内容,因此此解决方案[ 覆盖C中的函数调用 ]不适用。 通常,我可以编写一个.cpp文件并包含.c文件,其中包含我想要unit testing的函数,它实际上使用我添加的代码扩展了该文件。 这是一个我从未用于生产代码的肮脏技巧,但它对于unit testingC文件很方便,因为它使我的测试代码可以访问该C文件中的静态内容。 然后,我可以编写我的假依赖项版本,以及调用我正在测试的函数的unit testing函数。 我编译my.cpp来获取my.o,然后将其与静态库链接。 从理论上讲,由于链接器已经找到了依赖关系的定义(我提供的那个),因此它不会在库中查找,也不会发生冲突。 通常这可行,但现在我得到一个“多重定义”错误,链接器首先找到我的假,然后找到真正的假。 我不知道是什么原因引起的,不知道该找什么。 我也不能把它归结为一个简单的例子,因为我的简单例子没有这个问题。 想法好吗?