我试图实际使用-Wall并删除当前程序中的所有警告。我知道这不是必需的,但似乎它不会受到伤害,并且没有被证明太耗费时间。
我使用套接字在两个程序之间进行通信:一个在C ++ 11中(带有c部分),另一个在CUDA中(因此NVCC作为编译器)。套接字创建非常相似,为了防止警告我写了如下行:
#include<string.h>
extern char* strcpy(char*,const char*);
此前向声明适用于gcc / g ++以防止出现如下警告:
source.c:33:4: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration]
strcpy(saun.sun_path,CUDA_SOCKET_ADDR);
source.c:33:4: warning: incompatible implicit declaration of built-in function ‘strcpy’ [enabled by default]
但是,NVCC程序中的相同代码会产生另一个警告:
CUDAsource.cuh(26): warning: allowing all exceptions is incompatible with previous function "strcpy"
/usr/include/string.h(129): here
我需要在makefile中设置另一个设置吗?目前C方面有以下标志:
-g -O0 -Wall -std=c99
和nvcc有:
-g -G
任何提示都将不胜感激。
感谢。
答案 0 :(得分:2)
删除extern定义并将-D_GNU_SOURCE添加到编译器标志解决了这个问题。