C++代码在CodeLite运行正常,cmd用gcc编译报大量未定义引用错误是为什么?
问题根源
你用gcc命令编译C代码时触发了链接错误:gcc默认是C语言编译器,不会自动链接C标准库,你代码中用到的std::cin、std::string、std::cout等组件的实现都在C标准库中,因此链接阶段找不到对应的实现,抛出undefined reference错误。
你使用的CodeLite IDE默认调用g编译器编译C代码,g会自动关联C++标准库的链接逻辑,因此编译运行正常。
解决方案
你可以任选以下一种方式修复编译问题:
- 直接使用g命令编译C代码,命令如下:
编译完成后运行生成的cas.exe即可得到正确结果。g++ -o cas cas.cpp - 若要继续使用gcc命令,需要手动添加链接C++标准库的参数,命令如下:
gcc -o cas cas.cpp -lstdc++
代码潜在问题提示
你当前的countAndSay实现存在数组越界风险:for循环中i从0开始时直接访问s[i-1],i遍历到字符串末尾时访问s[i+1]、s[i+2]都属于越界访问,属于C++中的未定义行为,可能导致程序崩溃、输出结果异常等问题,建议调整遍历逻辑补充边界判断。
内容的提问来源于stack exchange,提问作者Saurabh Raj
相关产品推荐
相关产品推荐

