2014-07-21 48 views
0

我試圖實際使用-Wall並刪除當前程序中的所有警告。我知道這不是必需的,但它似乎不會受到傷害,也沒有證明太耗時。我使用套接字在兩個程序之間進行通信:一個在C++ 11(帶有c個部分)和另一個在CUDA(因此NVCC與編譯器)之間進行通信。插座創作是非常相似的,並且爲了防止警告我已經寫了線,如: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

CUDAsource.cuh是您創建的東西嗎?我無法通過Google,StackOverflow或NVIDIA論壇找到與其相關的任何內容。 – deathly809

+0

是的,正如source.c。該套件是根據本教程http://www.cs.cf.ac.uk/Dave/C/node28.html創建的。警告只與「extern」行有關。 – mjedmonds

+0

你可以把你的問題的行內容? – deathly809

回答

2

刪除外部定義並將-D_GNU_SOURCE添加到編譯器標誌解決了問題。